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