在MSDN上的文檔關於這一主題明確: 「複合類型不能包含關聯」的ComplexType與協會
當閱讀複雜的類型,最常用的例子就是地址的ComplexType:
class Person
{
public Address Address { get; set; }
}
class Address
{
public string Street { get; set; }
public string Zip { get; set; }
public string CountryId { get; set; }
}
我想要將國家定義爲關聯:
class Address
{
//other properties ....
public Country Country { get; set; } //vs: string CountryId { get; set; }
}
正如您所看到的,我想在廣告中添加關聯到國家/地區着裝ComplexType。不幸的是,這是不可能的。這使得完整的例子沒有意義,因爲我必須在Person類型本身上定義Country關聯,這會使整個Address-CT無用。
我們目前正在使用NHibernate設置一個項目,因爲EF缺乏我們項目所需的一些功能,但最有可能在EF 6中支持這些功能。考慮到EF和最近公佈的開源模型的快速發展,我們希望保持從NH到EF可能的未來遷移。 在NHibernate ComplexTypes(「組件」)中支持關聯,因此如果我們現在將它們用於NH,遷移到EF將不太可能。
我想知道這是否只是目前的限制?
- 是否有計劃在未來支持這樣的功能?
- 是否存在不支持此功能的明確原因,還是僅僅是「未實現atm」?
這是一個設計問題,您應該直接詢問[ADO.NET團隊](http://entityframework.codeplex.com/discussions)。 –
好的,我會在那裏發佈。 Thx爲鏈接。 –
請記住,EF中的ComplexTypes是可重用的,因此多個實體可以具有相同ComplexType的屬性。因此,在複雜類型的屬性與另一個屬性之間建立關聯並不是真的可行,因爲如果複雜類型在多個實體中使用,這樣的關聯可能不起作用。然而,如果實施的話,它可以工作的方式是定義一個協會,該協會將指向複雜類型的財產作爲「終點」(就關係/相關終結財產而言)。 – Pawel