我使用實體框架4.0實體框架4.0使用數據庫默認值
我們的許多表有一個名爲ROWID列,使用由DBA跟蹤的東西。該列是不可空的,具有映射到函數的數據庫默認值。
問題是,EDMX模型要求這個屬性在實體上有一個值,使對象的構建變得困難。
我已經閱讀了很多關於手動調整EDMX和SSDL文件的文章,以使這項工作。這對我們的團隊來說是不可行的。
除了在數據庫中設置NULLABLE之外,還有更好的解決方案嗎?我不在乎如何獲取價值,我只是希望數據庫能夠自行設置。
我使用實體框架4.0實體框架4.0使用數據庫默認值
我們的許多表有一個名爲ROWID列,使用由DBA跟蹤的東西。該列是不可空的,具有映射到函數的數據庫默認值。
問題是,EDMX模型要求這個屬性在實體上有一個值,使對象的構建變得困難。
我已經閱讀了很多關於手動調整EDMX和SSDL文件的文章,以使這項工作。這對我們的團隊來說是不可行的。
除了在數據庫中設置NULLABLE之外,還有更好的解決方案嗎?我不在乎如何獲取價值,我只是希望數據庫能夠自行設置。
如果RowID永遠不需要在應用程序的上下文中讀取或寫入,那麼它根本不屬於您的實體模型。 只需使用設計器(右鍵單擊>刪除)從您的實體模型中刪除它並讓數據庫管理它。
您應該直接在SSDL(模型後面的XML)中設置StoreGeneratedPattern =「Computed」。
1 - 右鍵單擊Model
2 - 選擇 「打開」=> XML編輯器
3 - 查找表中的一個的映射根據示範內容部分
4 - 將StoreGeneratedPattern =「Computed」屬性添加到RowID列
5 - 對文件執行全局替換,以便每個表都具有StoreGeneratedPattern =「Computed」的RowID定義
注: 如果使用更新模型嚮導,您將需要再次手動更新XML。我的建議是:不要使用嚮導或將原始和更改的xml行保存到單獨的文本文件中,以便在運行嚮導後讓它們可用於執行全局替換。
欲瞭解更多信息,請參閱這篇文章: http://msdn.microsoft.com/en-us/library/dd296755(v=vs.90).aspx
我正在使用實體框架5,並且當我設置StoreGeneratedPattern = Computed然後使用「從數據庫更新模型...」嚮導時,該字段是* not * reset。 – DaveD 2012-11-27 19:39:11
的問題是ROWID是在其它表FK,所以我需要能夠得到它,創造子實體時使用它。 – ctorx 2010-06-22 19:24:44