2010-04-30 43 views
0

我在數據庫中有一個媒體表。 我也有一個IMedia接口。EntityFramework 4.0:您可以根據數據庫中的數據返回不同的類型嗎?

我有兩個不同的媒體類型實現了相同的接口:

1)AudioMedia
2)PictureMedia

什麼我不知道這裏是如果我可以使用的EntityFramework(我使用的是EDMX文件,但是我的模型位於單獨的庫中,關閉了自動代碼生成功能),並根據數據庫中的數據選擇要獲取的類型(AutioMedia或PictureMedia)。

由於它們都實現了相同的接口(如果需要,可以改爲抽象類),我想在某個方向上你可以指定它應該是什麼類。

我也許應該指出,我有一個繼承自ObjectContext的類來訪問對象。也許有什麼可以做的?

回答

2

您可以使用繼承:AudioMediaPictureMedia都將繼承普通的MediaBase抽象類,由表示。特定於AudioMediaPictureMedia的成員將存儲在單獨的表中。

這種技術被稱爲「每種類型的表」策略,並受到實體模型設計者的支持。

您也可以使用策略「每個具體類型表」,但我不認爲這是由設計師(但它是由實體框架的支持)

檢查此鏈接瞭解詳細信息支持:http://blogs.msdn.com/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx

+0

...或表每層次,這似乎更適合在這裏。 – 2010-04-30 16:59:04

+0

是的,它也可以工作......但我不喜歡這種方法,所以我沒有建議它;) – 2010-04-30 18:27:22

相關問題