2015-11-02 10 views
1

我正在寫一個應用程序,我正在使用NHibernateSQLite添加衝突替換爲Nhibernate映射文件

我有一個表有一列,我希望它是唯一的,並在衝突取代。

這是我的.hbm.xml映射文件代碼。

<?xml version="1.0" encoding="utf-8"?> 

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
       assembly="TaxeeManager" 
       namespace="TaxeeManager.Database"> 

    <class name="Office" table="offices"> 
    <id name="Id" column="id"> 
    <generator class="identity" /> 
    </id> 

<property name="Name" column="name" /> 
<property name="Address" column="address" /> 
<property name="ManagerName" column="managername" /> 
<property name="Email" column="email" /> 
<property name="WebSite" column="website" /> 
<property name="Phone1" column="phone1" /> 
<property name="Phone2" column="phone2" /> 
<property name="Phone3" column="phone3" /> 
<property name="Picture" column="picture" /> 
<property name="Mid" column="mid" unique="true"/> 
<property name="RegisterId" column="registerid" /> 
<property name="Latitude" column="latitude" /> 
<property name="Longitude" column="longitude" /> 

</class> 

</hibernate-mapping> 

我的獨特欄是mid。我的table最後一定是這樣的。

CREATE TABLE offices (id integer primary key autoincrement, name TEXT, address TEXT, managername TEXT, email TEXT, website TEXT, phone1 TEXT, phone2 TEXT, phone3 TEXT, picture TEXT, mid BIGINT UNIQUE ON CONFLICT REPLACE, registerid TEXT, latitude DOUBLE, longitude DOUBLE) 

我該怎麼辦?

回答

1

親愛的穆罕默德禮我覺得你最該功能使用純SQL代碼創建這個約束:

session.CreateSQLQuery("CREATE TABLE offices (id integer primary key autoincrement, name TEXT, address TEXT, managername TEXT, email TEXT, website TEXT, phone1 TEXT, phone2 TEXT, phone3 TEXT, picture TEXT, mid BIGINT UNIQUE ON CONFLICT REPLACE, registerid TEXT, latitude DOUBLE, longitude DOUBLE)").ExecuteUpdate(); 

我希望這可以幫助您:)