Я новичок в Fluent NHibernate, и у меня есть проблема с определенным отношением HasMany
.Ошибка Fluid 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 без изменения реального внешнего ключа, определенного в базе данных?
[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?
я не хочу, чтобы добавить User_ID поле в [адрес]. [COMPANY_LIST] стол и я не хочу, чтобы добавить поля идента в AddressCompany класс ... причина бесполезное поле ... отношения являются:
user.LIST
ApplicationID (рк)
идентификатора (рк)
company.LIST
ApplicationID (рк) (FK -> user.LIST (ApplicationID))
идентификатор (рк)
идентификатор пользователя (рк) (FK -> user.LIST (ID))
address.COMPANY_LIST
ApplicationID (рк) (Ф.К. -> company.LIST (ApplicationID))
идентификатор (рк)
CompanyID (рк) (Ф.К. -> company.LIST (идентификатор))
почему nhibe rnate хочет заставить меня ссылаться только на точный первичный ключ?
Могу ли я обратиться к подмножеству первичного ключа класса компании?
большое спасибо ...