實體框架和默認值
回答
在數據庫第一種方法中,實體框架忽略默認值約束。但實體框架顯示列的默認值屬性。在Model.edmx查看器中,選擇一個實體 - >轉到列 - >屬性 - >默認值。添加列中的默認值,就是這樣。
在我的情況下,我通過代碼更新了Model.edmx文件。代碼從Db獲取默認約束,然後更新Model.edmx文件中的概念模型,因爲我有大量的默認值列。
默認值約束問題仍然存在,在實體框架,直到EF6的所有版本,似乎在實體框架來解決7
看起來你已經做了一些研究工作。豎起大拇指。 –
@Wasim,你說過「通過代碼更新Model.edmx文件」。你是怎麼做到的? – Thomas
@Thomas,在我的情況下,數據庫不夠大,無法編寫代碼腳本,所以我手動完成。 –
作爲解決辦法,我認爲您可以使用數據庫觸發器將列值更新爲默認值。
謝謝@Behzad,我很欣賞你的建議。 –
如果我無法從代碼方得到解決方案,我一定會去這個選項。 –
最簡單的方法是從C#初始化您的屬性,從而確保默認值。
對於數據庫首先,設計器忽略你的SQL默認值,你必須告訴它將你的列視爲計算:選擇你的實體 - >去列 - >屬性 - >設置StoreGeneratedPattern爲Computed(默認爲None)
我試過了,它工作。謝啦! –
只想問一下,是否有任何方法可以爲所有列設置此屬性,因爲當有多個表時它將會有所幫助。 –
@ user7369792 - 檢查[這個問題](http://stackoverflow.com/questions/12691854/setting-default-value-in-entity-framework-database-first) – Alexei
- 1. 實體框架默認值
- 2. 實體框架4和默認值
- 3. 實體框架默認值SYSDATETIMEOFFSET
- 4. 實體框架:設置回默認值
- 5. 實體框架外鍵默認值
- 6. 實體框架和默認日期
- 7. 實體框架表值函數 - 默認實體映射
- 8. 如何使用默認的實體框架和默認的日期值
- 9. 實體框架問題日期時間字段和默認值
- 10. 實體框架中的默認約束
- 11. 實體框架查詢本地默認
- 12. 實體框架一對多默認
- 13. 默認實體框架超時
- 14. 實體框架 - 默認子對象
- 15. WCF服務與DataContracts VS默認實體框架實體對象
- 16. 實體框架(ET)中Datetime列的默認值
- 17. 設置「默認值或綁定」實體框架代碼第一
- 18. 實體框架4.0使用數據庫默認值
- 19. 實體框架遷移中必填字段的默認值?
- 20. 在實體框架中設置默認值 - Database First
- 21. 使用實體框架4.3爲模型設置默認值
- 22. 實體框架代碼優先 - 非空類型的默認值
- 23. 如何在實體框架中設置默認值
- 24. 實體框架6碼首先在插入默認datetime值
- 25. 使用實體框架時不寫入默認值
- 26. 如何使用實體框架C#定義默認值?
- 27. 實體框架EDMX設計器擴展默認值
- 28. 實體框架 - 使用數據註釋屬性的默認值
- 29. 實體框架 - 默認值不在sql server表中設置
- 30. 禁用實體框架的默認值生成(代碼優先)
我一直只是把默認值在實體的初始化。我知道這是你想避免的,但它的工作原理。 –
在我的情況下,我的實體框架得到更新更頻繁,我有一些表,所以我通常避免在這些生成的代碼文件中進行任何更改。 –
我不確定你是如何生成你的實體pocos的(基於你的評論上面,它聽起來像你在做數據庫第一)但大多數工具可以選擇爲你的實體創建部分類。然後,您可以創建部分類來執行實例實例化時需要執行的任何自定義邏輯。 Simon Hughes創建了一個工作得很好的工具 - https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator –