【发布时间】:2013-11-20 20:53:44
【问题描述】:
我在为我遇到的问题寻找好的文档时遇到问题。我正在重构企业解决方案的一部分,并将 NHibernate 换成我们的 ORM。我有 3 个表,我希望它们都相互继承。
MasterAccount:帐户:InvBilling
**MasterAccount**
id_MasterAccount
**Account**
id_Account
id_MasterAccount
id_InvBilling
**InvBilling**
id_InvBilling
id_MasterAccount
对于 MasterAccount 中的每一行,Account 中存在一行,其中 Id_MasterAccount 列相等,IsMaster 列为 1。但是,Account 表中还有其他记录,它们的 id_MasterAccounts 也等于与其父帐户相关联.最后,Account 表中的每条记录在 InvBilling 表中都有一条记录。
我在设置他们的映射时遇到了很多问题。关于如何设置的任何帮助?
我需要以某种方式告诉 MasterAccount 它应该将自己关联到哪个 Account 记录以及它应该使用的列。
编辑:这是我目前所拥有的:
public class MasterAccountEntity : AccountEntity{
protected virtual int MAId {get;set;}
}
public class AccountEntity : InvBillingEntity{
protected virtual int AId {get;set;}
public virtual MasterAccountEntity MA {get;set;}
public virtual InvBillingEntity IB {get;set;}
public virtual bool IsMaster {get;set;}
}
public class InvBilling{
protected virtual int IBId {get;set;}
public MasterAccountEntity MA {get;set;}
}
然后对于我的映射(在如何显示继承方面有些迷失):
public class FluentHibernateMap : SubclassMap<MasterAccountEntity>{
Table("MasterAccount");
Map(x => x.MAId).Column("id_MasterAccount");
}
public class FluentHibernateMap : SubclassMap<AccountEntity>{
Table("Account");
Map(x => x.AId).Column("id_Account");
Map(x => x.IsMaster).Column("isMaster");
References(x => x.MA).Column("id_MasterAccount").Not.Nullable().Cascade.None();
References(x => x.IB).Column("id_InvBilling").Not.Nullable().Cascade.None();
}
public class FluentHibernateMap : ClassMap<InvBillingEntity>{
Table("InvBilling");
Id(x => x.IBId).Column("id_InvBilling");
References(x => x.MA).Column("id_MasterAccount").Not.Nullable().Cascade.None();
}
所以MasterAccount需要从Account继承IsMaster为true的记录,然后继承InvBilling中与Account中InvBillingId对应的记录。
【问题讨论】:
-
要获得帮助,请发布您目前拥有的映射/实体代码
-
添加了我的,希望你能帮上忙!
标签: inheritance fluent-nhibernate