0
我有一個問題。我使用NHibernate和MySql。在我的實體中,我使用Id(PK)作爲我的商業邏輯使用,Guid(作爲複製)。所以我BaseDomain:與MySQL的Nhibernate Guid MySQL
public class BaseDomain
{
public virtual int Id { get; set; }
public virtual Guid Guid { get; set; }
public class Properties
{
public const string Id = "Id";
public const string Guid = "Guid";
}
public BaseDomain() { }
}
我使用域名:
public class ActivityCategory : BaseDomain
{
public ActivityCategory() { }
public virtual string Name { get; set; }
public new class Properties
{
public const string Id = "Id";
public const string Guid = "Guid";
public const string Name = "Name";
private Properties() { }
}
}
映射:
<class name="ActivityCategory, Clients.Core" table='Activity_category'>
<id name="Id" unsaved-value="0" type="int">
<column name="Id" not-null="true"/>
<generator class="native"/>
</id>
<property name="Guid"/>
<property name="Name"/>
</class>
但是,當我插入我的實體:
[Test]
public void Test()
{
ActivityCategory ac = new ActivityCategory();
ac.Name = "Test";
using (var repo = new Repository<ActivityCategory>())
repo.Save(ac);
}
我總是得到「00000000 -0000-0000-0000-000000000000'在我的Guid領域。 我應該怎麼做才能生成正確的Guid。可能會映射?
非常感謝!
非常感謝您的回答。我想通過db生成guid。試試你的變體生成=「插入」,但再次獲得'00000000-0000-0000-0000-000000000000'。我做錯了什麼? – 2010-03-11 10:54:17
您可能需要該列在插入語句中爲空或不存在。我已經更新了答案,將其從插入中排除。 – 2010-03-11 15:20:22
這個變化之後,我已經有了: NHibernate的:INSERT INTO clients.Activity_category(名稱)VALUES ;? P0 = '測試' NHibernate的(P0):SELECT LAST_INSERT_ID() NHibernate的:SELECT activityca_.Guid爲Guid0_ FROM clients.Activity_category activityca_ WHERE activityca_.Id =?p0;?p0 = 4 NHibernate:UPDATE clients.Activity_category SET Guid =?p0,Name =?p1 WHERE Id =?p2;?p0 = 00000000-0000-0000-0000- 000000000000,?p1 ='Test',?p2 = 4 – 2010-03-12 06:32:30