2015-11-02 67 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(); 

我希望这可以帮助您:)