爲什麼我不能在實體框架中使用數據庫集默認值?當我設計我的數據庫時,我添加了適當的默認值(即「默認值或綁定」字段)。現在看來,我必須在代碼中指定這些默認值,除非我使用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. 爲什麼我不能使用String.Empty作爲默認參數值?
- 2. 爲什麼默認值不使用Django
- 3. 爲什麼我不能在函數參數中使用$ this默認值
- 4. SSMS爲什麼不遵守我的默認數據庫設置?
- 5. 爲什麼我們不能用默認值聲明常量?
- 6. 爲什麼我不能使用默認值獲取參數長度?
- 7. 爲什麼非默認參數不能遵循默認參數?
- 8. 爲什麼我不能將類構造函數參數設置爲默認值?
- 9. moq-爲什麼不能使用默認參數
- 10. 爲什麼不能指定Scala可變參數的默認值?
- 11. 爲什麼PyCrypto不使用默認IV?
- 12. ipcalc - 爲什麼不能默認
- 13. 爲什麼我不能使用php插入到mysql數據庫?
- 14. 爲什麼我不能使用t-sql備份數據庫?
- 15. 爲什麼我不能使用PHP編輯/更新數據庫?
- 16. 爲什麼局部變量不能用默認值初始化?
- 17. 爲什麼AllowPartiallyTrustedCallers不是默認值?
- 18. 爲什麼我不能更新sqlite數據庫的值
- 19. 爲什麼我不能在Mono中使用C#4默認參數?
- 20. 爲什麼SQL Server 2012默認創建單用戶數據庫?
- 21. 爲什麼我不能在Android中的SQLite數據庫中添加這些默認值?
- 22. activerecord:數據庫默認值不生效
- 23. 爲什麼EclipseLink認爲我的數據庫模式不存在?
- 24. 爲什麼不是默認
- 25. 爲什麼不能默認參數取決於非默認參數?
- 26. 爲什麼PHP不在其默認庫中使用對象?
- 27. 什麼是ORCL數據庫中默認表的功能
- 28. S3默認使用什麼Glacier庫?
- 29. 爲什麼我們不能將char類型變量的默認值設置爲''
- 30. 依靠默認編碼,我應該使用什麼,爲什麼?
但是,如果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