兩個問題,其次是詳細信息:EF:更改ProviderManifestToken或更改數據類型?
- 當我改變我的ProviderManifestToken爲「2005」還有什麼其他的副作用發生的呢?
- 將數據庫中的模式更改從
datetime
更改爲datetime2
是不明智的嗎?例如,如果我將ProviderManifestToken保留爲「2008」,稍後有人試圖從EDMX模型生成數據庫模式,那麼在創建這些列時它會使用datetime2
數據類型嗎?
詳情:
VS2010 SP1
.NET 4
EF 4
SQL Server 2008中
我沒有動手實體框架的經驗,我突然維護一個使用它的代碼庫。代碼庫非常脆弱,時間緊,還沒有被那些人理解。
解決方案資源管理器顯示一個EDMX文件,該文件映射到我們DEV數據庫中的現有模式。我不知道哪個(模型或數據庫)首先出現。
提交操作時得到這個錯誤:
The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
當我看着我的日期/時間列的數據類型在我的SQL Server 2008實例,他們都datetime
,不datetime2
。
當我看EDMX文件的XML,我看到這個架構元素屬性:
ProviderManifestToken="2008"
我猜,什麼地方,有一個在我的.NET代碼具有值的日期時間值超出SQL Server 2008的datetime
數據類型的範圍。我從閱讀中瞭解到,將EDMX的ProviderManifestToken更改爲「2005」會阻止EF在這些提交期間嘗試使用datetime2
類型。
這裏是我的問題:我不知道這個代碼庫還有什麼,或者EF的位置,如果我從2008年到2005年改變這個,它會發生變化,而且當我不是絕對的需要。