2012-08-15 139 views
3

我剛開始用Code First查看數據庫視圖...並嘗試決定是否應該使用它們。EF代碼優先和數據庫視圖

Here Ladislav建議對錶和Db-View使用NotMapped繼承父項(我的視圖只添加子實體的總和)......但是這對CF Migrations是如何工作的?我真的想用它們。

另外...導航屬性將在Db-View實體上工作?

有什麼辦法可以直接將數據保存到Db-View實體(和它的表)嗎?

回答

8

如果您想先使用代碼並進行遷移,則不應使用視圖。視圖是數據庫「邏輯」結構和代碼首先不是創建數據庫邏輯的方法。首先使用代碼,您應該使用鏈接答案中提到的投影。

遷移將無法檢測到與您的觀點相關的更改。您必須手動編寫所有視圖的遷移代碼。

如果你想使用視圖,你應該首先執行數據庫(=不遷移),並將它們映射到EDMX或代碼映射。

另外...導航屬性將適用於Db-View實體?

這是代碼映射提供比EDMX更好的支持的唯一場景。即使數據庫中不存在關係,也可以在模型中定義關係(但數據庫必須確保數據完整性)。 EDMX在理論上也是可行的,但它需要手動更改EDMX。

有什麼辦法可以直接將數據保存到Db-View實體(和它的表)嗎?

是的,但您的視圖必須是可更新的。我不認爲具有聚合值的視圖是可更新的。

+0

謝謝,很好的回答!抱歉,我無法投票(低代表) – peter 2012-08-16 08:17:44