Я определил первичный ключ следующим образом:Внешний ключ к таблице с 2 колонками первичного ключа (CompositeId)
CompositeId()
.KeyProperty(x => x.Id)
.KeyProperty(x => x.Type);
Я попробовал следующее:
References(x => x.EntityWith2ColsPK);
и не с :
Иностранный ключ (Fk_MyEntity_EntityWith2ColsPK: MyEntities [Fk_EntityWith2ColsPK])) должны иметь одинаковое число столбцов в качестве ссылочного первичного ключа (EntityWith2ColsPKs [Id, Type])
Как я могу ссылаться на EntityWith2ColsPK с другого объекта?
Update:
Я попытался следующие (в соответствии с комментарием AlfeG в):
HasMany<EntityWith2ColsPK>(x => x.EntityWith2ColsPK).KeyColumns.Add("Id", "Type").Cascade.All();
Что не удалось с:
Пользовательский тип не реализует UserCollectionType: EntityWith2ColsPK
Но, во всяком случае, я не хочу отношения 1 к другому, я хочу отношение 1 к 1. Тем не менее, я не могу заставить их работать.
Кроме того, я попытался:
HasOne<EntityWith2ColsPK>(x => x.EntityWith2ColsPK).PropertyRef(x => x.Id).PropertyRef(x => x.Type);
Который терпит неудачу с:
NHibernate.MappingException: недвижимость не найдена: Тип объекта на EntityWith2ColsPK
Что я могу сделать для этого действительно работать?
мне удалось достичь чего-то в дб .. но тем не менее, по какой-то причине, я подозреваю, что он отображает свойство «Тип» в два раза, потому что я хочу, чтобы это было как часть первичного ключа, и часть Иностранный ключ .. Это то, что я сделал:
References(x => x.EntityWith2ColsPK).Columns("EntityWith2ColsPKId", "Type").Formula("Id = :EntityWith2ColsPKId AND Type = :Type");
Но я получил следующее исключение:
System.IndexOutOfRangeException: Invalid индекс 8 для этого SqlParameterCollection с графом = 8.
Поскольку отображение данного лица такое же, как EntityWith2ColsPK:
CompositeId()
.KeyProperty(x => x.Id)
.KeyProperty(x => ((ILocalizedEntity) x).Language);
HELP!
Это дубликата вопрос http://stackoverflow.com/questions/4460648/how-to-map-composite- primary-key-to-foreign-in-fluent-nhibernate, так что вы можете найти anser по этой ссылке – AlfeG
Это не решает мою проблему :( –