2012-03-19 63 views
1

是否可以將字段添加到實體框架類,而不是映射到表中的列而是映射到SQL查詢?我可以將任意SQL查詢映射到實體框架字段嗎?

對於一個人爲的例子(注意:這不是我真正想做的事情,只是一個更容易解釋我想要完成的例子)我希望我的班級有一個TableCount字段來保存結果SELECT COUNT(*) FROM MyTable在對象從數據庫加載的時間。

編輯:我應該在我原來的文章中提到過這一點,但我使用POCO類。

回答

1

你不能映射到數據庫實體直接做,而是有兩種方法如何與包含從原始的實體和列創建額外的計算列一個新的實體類型來實現它:

  • 創建數據庫視圖並映射該視圖 - 這是EDMX設計人員爲您全自動維護的方式
  • 編寫查詢以填充整個新實體類型並將其手動映射到DefiningQuery。缺點是它需要手動進行EDMX編輯,並且無需額外(商業)工具也可以手動維護EDMX,因爲每次選擇從數據庫更新時,標準VS EDMX Designer都會覆蓋已編輯的SSDL部分。
+0

請參閱我的編輯。我使用POCO類,所以EDMX設計師並沒有真正進入它。 – Mykroft 2012-03-19 18:55:32

+0

EDMX仍然可以使用POCO類。如果您先使用代碼,則無法將自定義查詢映射到您的類,但是如果您正在使用現有數據庫的代碼映射,則可以使用第一種方法。 – 2012-03-19 19:10:31