我是新与功能NHibernate列的,我有一个问题与特定的HasMany
关系。功能NHibernate错误:必须有相同的号码作为参照的主键
我有三个对象:User
,Company
和CompanyAddress
User
引用Company
正确Company
将引用CompanyAddress
(但失败)。
Company
映射是由像以下:
public class CompanyMap : ClassMap<Company>
{
public CompanyMap()
{
Schema("company");
Table("LIST");
this.CompositeId(x => x.key)
.KeyProperty(x => x.applicationId, "APPLICATION_ID")
.KeyProperty(x => x.id, "ID")
.KeyProperty(x => x.userId, "USER_ID");
this.Map(x => x.vat, "VAT");
this.HasMany(x => x.addresses)
.Not.LazyLoad()
.Cascade.None();
this.References(x => x.user)
.Class<User>()
.Columns("APPLICATION_ID", "USER_ID")
.Insert()
.Update()
.Fetch.Select()
.Not.LazyLoad()
.Cascade.None();
}
}
和CompanyAddress
是:
public class CompanyAddressMap : ClassMap<CompanyAddress>
{
public CompanyAddressMap()
{
Schema("[address]");
Table("COMPANY_LIST");
this.CompositeId(x => x.key)
.KeyProperty(x => x.applicationId, "APPLICATION_ID")
.KeyProperty(x => x.id, "ID")
.KeyProperty(x => x.entityId, "COMPANY_ID");
this.Map(x => x.country, "COUNTRY");
this.Map(x => x.province, "PROVINCE");
this.Map(x => x.region, "REGION");
this.Map(x => x.city, "CITY");
this.Map(x => x.address, "[ADDRESS]");
this.Map(x => x.description, "DESCRIPTION");
this.References(x => x.company)
.Class<Company>()
.Columns("APPLICATION_ID", "COMPANY_ID")
.Insert()
.Update()
.Fetch.Select()
.Not.LazyLoad()
.Cascade.None();
}
}
但我收到此错误:
Foreign key (FK8DE1BC098F20893F:COMPANY_LIST [APPLICATION_ID, COMPANY_ID])) must have same number of columns as the referenced primary key (LIST [APPLICATION_ID, ID, USER_ID])
我需要引用AddressCompany
与非主关键,因为Company
已被User
引用,因此我的问题是:
如何在不修改定义到数据库中的真正外键的情况下使用Fluent NHibernate引用此外键?
[编辑]
i need to reference AddressCompany with non the primary key 'cause Company is already referenced by User and so my question is: how can i reference this foreign key using fluent nhibernate without modifying the real foreign key defined into the database?
我不想USER_ID字段添加到[地址]。[COMPANY_LIST表,我不希望添加用户id字段AddressCompany类......“原因是无用场...的关系是:
user.LIST
的applicationID(PK)
ID(PK)
company.LIST
的applicationID(PK)(FK - > user.LIST(的applicationID))
ID(PK)
用户id(PK)(FK - > user.LIST(ID))
address.COMPANY_LIST
的applicationID(PK)(FK - > company.LIST(的applicationID))
ID(PK)
companyId(PK)(FK - > company.LIST(ID))
为什么nhibe rnate想逼我只引用确切的主键?
可以参考我公司类的主键的一个子集?
感谢这么多...