2009-10-23 77 views
3

我使用VS2010 Beta 2中,我有一個複雜類型,稱爲地址具有以下屬性:如何添加導航屬性的實體框架複雜類型

  • CountryId

我有一個國家實體在我的模型中定義,但我似乎無法找到一個方法來廣告d從CountryId我的複雜類型的屬性到Id屬性我的國家實體的參考(導航屬性)。

我我要對這個錯誤的方式或者是這個東西,我不能與設計師??做...

另一種選擇我只是創建一個地址實體,但它只是聽起來不正確。

+0

地址複雜類型包含其他屬性,它們只是在這一點上不相關..... – hminaya 2009-10-23 17:10:31

回答

1

好吧,

這似乎是當前版本的實體框架的複雜類型中不支持導航屬性或外鍵。

另一個明智的選擇是創建一個單獨的地址實體,它將擁有它需要的所有外鍵,然後在所有其他實體中創建導航屬性。

4

不,你不能這樣做,因爲它違背了什麼複雜的類型和導航屬性的想法。複雜類型具有值語義,而不是參考身份。導航屬性是第一類實體並具有引用語義。因此,它們不能成爲複雜類型的一部分。正如您已經發現的那樣,解決方案是將具有值語義的部分劃分爲複雜類型,並將其添加到包含所需導航屬性的實體中。

+0

它可以在nHibernate中完成嗎? – billy 2011-05-17 13:00:45

+3

這是如何違反價值語義?導航屬性只是對實體的引用。 – MZywitza 2011-05-23 07:21:01

+0

@MZywitza:你剛剛回答了你自己的問題。如果它包含一個引用,它實際上不是一個值類型。請參閱Microsoft關於值類型的指導原則:http://msdn.microsoft.com/en-us/library/ms229017.aspx – 2011-05-23 13:15:06