作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Entity Framework 7 (Entity Framework Core) 在 PropertyBuilder
上有两组不同的扩展方法.第一个似乎是“通用”集:
最佳答案
我想我已经想通了。在 EF Core 中,您可以使用不同的提供程序(目前是 SQL Server 和 SQLite,我相信 Azure Tables 将来会出现)。由于这些提供程序的功能略有不同,您可以根据所使用的提供程序为同一属性指定不同的行为。本着依赖注入(inject)的真正精神,这允许您设置一个不关心使用哪个提供者的上下文 - 将提供者的选择留给 DI 容器。
例如,我有一个应用程序在生产中使用 SQL Server,但启动 SQLite 内存数据库以进行集成测试。由于两者之间的 SQL 略有不同,我可以创建一个具有默认值的属性,该属性在两者中的工作方式类似:
b.Property(x => x.ValidFrom)
.IsRequired()
.HasColumnName("ValidFromDate")
.ForSqlServerHasDefaultValueSql("getutcdate()")
.ForSqliteHasDefaultValueSql("CURRENT_TIMESTAMP");
What is the difference between the two groups and when do I use which one?
关于entity-framework-core - EF7 属性生成器中的 `Has...` 和 `ForSqlServerHas...` 扩展方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936956/
我是一名优秀的程序员,十分优秀!