1
我有2个相互引用的类。这是我们的CRM需要的一个奇怪的情况。NHibernate的参考不要'保存外键
我有一个组织和EmAddress表和类。该组织从Subscriber继承,它也有一个表。我想这可能是我的问题,还是事实,我不能设置反向这些,因为没有“的hasMany” ......
插入的顺序/更新.. INSERT电子邮件 INSERT组织 更新电子邮件设置电子邮件。订阅者
Email.Subscriber需要是“NOT NULL”,所以这是行不通的。如何更改订单,因为没有列表,所以我不能使用逆。只有2个参考。
public class Organization : Subscriber
{
public override string Class { get { return "Organization"; } }
EmAddress PrimaryEmailAddress {get;set;}
}
public class OrganizationMap : SubclassMap<Organization>
{
public OrganizationMap()
{
Table("Organization");
KeyColumn("Organization");
References(x => x.PrimaryEmail,"PrimaryEmailAddress").Cascade.SaveUpdate();
}
}
public EmAddressMap()
{
Id(x => x.Id, "EmAddress");
Map(x => x.EmailAddress, "eMailAddress");
References<Subscriber>(x => x.Subscriber,"Subscriber").LazyLoad().Fetch.Select().Not.Nullable();
/*not.nullable() throw s error. NHibernate INSERTS email, INSERTS org, UPDATES email. */
}
public class EmAddress
{
public virtual Guid Id { get; set; }
public virtual string EmailAddress { get; set; }
public virtual Subscriber Subscriber { get; set; }
}
//Implementation
var session = NHIbernateHelper.GetSession();
using(var tx = session.BeginTransaction())
{
var org = new Organization();
org.PrimaryEmail = new EmAddress(){Subscriber = org};
session.Save(org);
tx.commit();
}
Thyanks,之前我曾看过那篇文章,但并没有认为它适用于此。位于此数据库之上的CRM具有一些业务规则,这些规则会导致我们的数据库架构与假设不同。 – Brandon