爲什麼我不能在實體框架中使用數據庫集默認值?當我設計我的數據庫時,我添加了適當的默認值(即「默認值或綁定」字段)。現在看來,我必須在代碼中指定這些默認值,除非我使用StoreGeneratedPattern.Computed
,但之後我不允許更改該值。如果我沒有在代碼中指定默認值,我會得到一個異常。爲什麼我不能使用數據庫集默認值?
0
A
回答
0
這裏有一些邏輯。
在你的實體中你有public int ExampleInt {get;組; }。假設您將示例列的默認值設置爲100.
想象一下創建實體對象的情況。它是一個C#對象,缺省值由運行時填充。 ExampleInt用值0初始化。此時,實體對象對數據庫一無所知。然後你決定保存實體。 EF將不得不創建一行,然後插入您指定的值。可是等等?這應該是0還是100?如果您對該字段進行了更改,EF將不得不跟蹤,但是如果您創建了實體對象,則在您將其附加/保存之前,EF並不知道它。
只是一個想法:如果你在構造函數中運行一個查詢來檢查默認值?這將作爲你創建對象的時刻,它將被填充默認值。如果該對象是由EF創建的,則該值將被您在db中的值覆蓋。其實,我有一個更好的主意。
爲什麼不使用工廠來創建新的實體對象?工廠可以查詢數據庫的默認值?它仍然不是很好,但更好的是在構造中運行查詢。所以:
public class ExampleFactory
{
public static GetExample()
{
// obviously you want to run it only once. This is example only.
int defaultValue = dbContext.Database.SQLQuery("SqlToGetTheDefaultValue");
return new Example { ExampleInt = defaultValue };
}
}
所以你去了。現在你知道EF爲什麼不能做到這一點。我也給了你(壞)的想法,你怎麼解決這個問題。
相關問題
- 1. 爲什麼我們不能用默認值聲明常量?
- 2. 爲什麼我不能使用默認值獲取參數長度?
- 3. 爲什麼我不能將類構造函數參數設置爲默認值?
- 4. ipcalc - 爲什麼不能默認
- 5. 爲什麼局部變量不能用默認值初始化?
- 6. 爲什麼AllowPartiallyTrustedCallers不是默認值?
- 7. 爲什麼我不能更新sqlite數據庫的值
- 8. 爲什麼我不能在Mono中使用C#4默認參數?
- 9. 爲什麼我不能在Android中的SQLite數據庫中添加這些默認值?
- 10. activerecord:數據庫默認值不生效
- 11. 爲什麼EclipseLink認爲我的數據庫模式不存在?
- 12. 爲什麼PHP不在其默認庫中使用對象?
- 13. 默認情況下,爲什麼數據表不能以降序顯示數據?
- 14. 爲什麼在MySQL中文本列不能有默認值?
- 15. 爲什麼我不能使用angularjs將數據插入到mysql數據庫中
- 16. 爲什麼我們不應該使用(默認)src包?
- 17. 爲什麼我不能將數據集傳遞給函數?
- 18. 爲什麼CUPS不能返回我的默認打印機?
- 19. 空數據庫值和默認值
- 20. 爲什麼默認Azure數據庫連接字符串池=假
- 21. Android認爲我沒有關閉我的數據庫!爲什麼?
- 22. 爲什麼Reduux在Redux中默認稱爲默認值?
- 23. 爲什麼我的數據庫不能用EF保存?
- 24. 爲什麼我不能使用「import ... as」導入默認導出與BabelJS
- 25. 爲什麼我不能使用我的JSON數據?
- 26. 爲什麼Rails使用默認值保存/返回錯誤值?
- 27. 爲什麼我不能使用「rake db:create」創建我的數據庫?
- 28. 爲什麼Nginx默認使用'accept_mutex'''?
- 29. 爲什麼NFS默認使用UDP?
- 30. 爲什麼我的php函數不能插入數據庫?
但是,如果EF元數據可以包含默認值並且在數據庫更新時更新,那將會很好。我只是不喜歡在不止一個地方擁有不變的價值觀。 *嘆* – Jordan 2013-04-09 20:06:16
我同意,這可能是很好的。 http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions – 2013-04-09 20:19:58
您是否看到:「具有StoreGeneratedPattern.Computed的屬性可以在應用程序中設置,但不使用該值。唯一的例外是ConcurrencyMode.Fixed屬性,只有在實體沒有被上下文跟蹤時設置它們,我纔會使用這些屬性,我將在另一篇博文中進一步討論這個問題,因爲它是實體框架中樂觀併發處理的一個大問題。 http://www.ladislavmrnka.com/2011/03/the-bug-in-storegeneratedpattern-fixed-in-vs-2010-sp1/ – 2013-04-09 20:33:01