实体框架和默认值
回答
在数据库第一种方法中,实体框架忽略默认值约束。但实体框架显示列的默认值属性。在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 –