Fluent NHibernateで新しく、特定のHasMany
関係に問題があります。Fluent NHibernateエラー:参照される主キーと同じ列数を持つ必要があります
私は3つのオブジェクトがあります。User
、Company
とCompanyAddress
User
正しくCompany
CompanyAddress
を参照(これは失敗した)でしょうCompany
参照を。
Company
マッピングは次のように構成されています
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();
}
}
が、私はこのエラーが表示されます:
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
がある
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で参照するにはどうすればよいですか?
[EDIT]
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?
私は[アドレス]。[COMPANY_LIST]テーブルにUSER_IDフィールドを追加したくないと私はAddressCompanyクラスにはuserIdフィールドを追加する必要はありません...」原因は役に立たない分野である...関係は以下のとおりです。
user.LIST
APPLICATIONID(PK)
ID(PK)
company.LIST
アプリケーションID(PK)(FK - > user.LIST(アプリケーションID))
ID(PK)
のuserId(PK)(FK - > user.LIST(ID))
address.COMPANY_LIST
アプリケーションID(PK)(FK - > company.LIST(アプリケーションID))
ID(PK)
企業ID(PK)(FK - > company.LIST(ID))
理由元気rnateは正確な主キーのみを参照するようにしたいのですか?
私はCompanyクラスの主キーのサブセットを参照できますか?
ありがとうございます...