我定義主鍵如下:外鍵的表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?
更新:
我以下(根據AlfeG的評論)嘗試:
HasMany<EntityWith2ColsPK>(x => x.EntityWith2ColsPK).KeyColumns.Add("Id", "Type").Cascade.All();
與失敗:
自定義類型未實現UserCollectionType:EntityWith2ColsPK
但無論如何我不想要一對多的關係,我想要一個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:無效的指數8此SqlParameterCollection以計數= 8。
因爲這個實體的映射是一樣的EntityWith2ColsPK:
CompositeId()
.KeyProperty(x => x.Id)
.KeyProperty(x => ((ILocalizedEntity) x).Language);
HELP!
它的重複使用問題,像這樣http://stackoverflow.com/questions/4460648/how-to-map-composite-主鍵到外來流利-nhibernate所以你可以通過這個鏈接找到anser – AlfeG 2012-02-11 12:49:13
這並不能解決我的問題:( – 2012-02-11 15:26:01