實體框架:忽略列

entity-framework

我有一個數據庫,我希望從中構建一個EF模型,但我不想包含數據庫中的某些列,因為相關列只在服務器上維護,不應被任何應用程序操縱。

這兩列都是DateTime(如果這有任何區別),其中一列可以為空,並且由更新時的觸發器維護,另一列不可為空,並使用表定義中的默認值進行設置。

我想我正在尋找像Linq2Sql中的“Server Generated”選項;但我找不到這樣的選擇。

誰能告訴我如何解決這個問題?

警告:

我一直試圖在我的工作地點引入業務對象建模多年,並且由於必須手動操作的附加代碼量,它一直被拒絕。由於設計人員和代碼生成,EF目前被視為一種可行的解決方案,因此任何涉及手動操作XML的選項都只會讓我的其他同事遠離EF。因此,我正在尋找可以使用設計器或使用代碼完成的任務。

編輯:

我想這裡我要找的是......

(a)創建模型的方法,不使用EF引用存儲中的列(ssdl),因此不希望以任何方式操作它(b)在創建時以編程方式將“StoreGeneratedPattern”屬性設置為屬性的方法ObjectContext(簡單的答案是在.ssdl中手動操作它,但是如果我從數據庫中刷新模型,那麼這將被覆蓋,我無法沿著.csdl,.msl和.ssdl手動的路徑走下去)。

熱門答案

你能用Entity Framework做到這一點嗎?是;這很簡單。你能用Entity Framework設計師做到這一點嗎?不幸的是,這要困難得多。

您遇到的問題是該列存在於EDMX中的存儲架構(SSDL)中。使用GUI設計器刪除列只是將其從客戶端模式中刪除,而不是映射或存儲模式。但是,進入EDMX並刪除它很簡單。完成後,您還可以將其從EDMX的客戶端架構部分中的映射中刪除,實體框架將更長時間抱怨它未映射。

問題解決了吧?

好吧,不。使用GUI設計器從數據庫更新EDMX時,將丟棄並重新生成存儲架構。所以你的專欄會回來。據我所知,沒有辦法告訴GUI設計師永遠不會映射特定的列。因此,每次使用GUI設計器進行更新時都必須重新執行此操作。幸運的是,EDMX是XML,因此您可以使用XML轉換,LINQ或您選擇的XML工具來完成此操作。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因