添加冲突替换为Nhibernate映射文件

时间:2015-11-02 09:38:59

标签: c# sqlite nhibernate unique nhibernate-mapping

我正在编写一个应用程序,我正在使用NHibernate SQLite

我有一个包含列的表,我希望它是唯一的并且可以替换冲突。

这是我的.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 个答案:

答案 0 :(得分:1)

亲爱的Mohammad Reza我认为你最通过这个函数使用纯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();

我希望这可以帮助你:)。