2012-09-02 29 views
0

是否可以使用BD第一種方法定義繼承映射和鑑別器屬性。自動生成繼承映射mvc DB首先

我使用EDMX圖來定義表格與對象的映射。 我有一個DomainEntity表,其中包含我所有的域實體,並且它們被映射到DomainEntityTypes表的TypeID所描述。

如果我有完全的控制,我會設計的映射是這樣的:

  1. 定義一個abstarct類DomainEntity
  2. 繼承了DomainEntity CALSS以創造具體的實體
  3. 使用繼承映射註解和IsDiscriminator關於類型ID的註解
  4. 使用枚舉來定義所有可能的類型(並且我想知道從那一點開始,類型表是什麼)

所有這些都可以以某種方式在EDMX文件中定義?或者我需要停止使用自動生成並繼續手動映射?

回答

2

繼承映射沒有「自動生成」。首先使用數據庫時,只需將表格加載到模型中,它將創建具有關係的實體。現在如果你想繼承,你必須修改設計器的映射。 Here是如何在設計器中設置TPH繼承的一個很好的描述。

  1. 您可以爲您的繼承層次定義基本實體爲抽象。它是圖中實體的屬性。
  2. 您必須爲您想要使用的所有類型繼承新實體,並在映射中正確設置其鑑別符值。
  3. 沒有真正的註釋 - 繼承是工具箱中可用的構造,鑑別器是映射中定義的條件。
  4. 你將沒有枚舉。 Discriminator列在您的實體中甚至不可用,因爲它已經用於定義映射到正確的類型(每個列在映射中只能使用一次,因此您可以將它用於屬性或區分符而不是都)。你將有一組有限的實體來描述你的繼承層次而不是枚舉。
+0

謝謝你,真的很好的解釋...我喜歡你附加的帖子,我一定會在以後徹底審視。 – Mortalus