我是新與功能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想逼我只引用確切的主鍵?
可以參考我公司類的主鍵的一個子集?
感謝這麼多...