【发布时间】:2021-06-14 18:21:22
【问题描述】:
我想知道,EntityFramework 6 和 EFCore 3.1 中是否有任何方法可以自定义脚手架,例如SQLServer date 将变为 NodaTime.LocalDate 并且 SQLServer datetime(或 datetime2)将转换为 NodaTime.Instant?
如果是这样 - 任何人都可以给我一个例子吗?
我在这里找到了类似的东西:Entity Framework Core - Customise Scaffolding,但我找不到任何与类型相关的代码编写的特定内容。
【问题讨论】:
-
我不知道答案,但您认为这可能与使用
OnModelCreating并为您的DateTime属性实现property.SetValueConverter()有关吗? -
@NateW 一般来说 - 我对脚手架定制的可能性一无所知,除了我发现的这样的事情:stackoverflow.com/questions/37679367/…,blog.tonysneed.com/2018/05/27/… 我想得到任何时候我需要脚手架的可能性模型(即模型已更改)我将始终获得相同的数据类型。如果我理解正确(也许不是) - 对 OnModelCreating 的更改可能不会是“恒定的”。
-
我无法理解您的问题的根本缺陷是我以前从未遇到过 NodaTime。但是,是的,我认为你是对的。我的建议是将数据库中的数据解释为 pocos,而您的问题是为 pocos 的创建搭建脚手架。所以,这可能不是正确的解决方案。
-
@NateW 通常-我尝试将 DateTime 替换为适当的 NodaTime 等效项(
LocalDate、Instant,具体取决于 SQLServer 类型)并且效果很好(除了为 EF 声明 NodaTime 类型的问题OData),但由于项目类型非常多,我希望有一种自动方法来确保它始终符合我的要求。 -
啊,我明白了。比使用
DateTime搭建类然后使用查找和替换工具更好的方法...
标签: c# sql-server entity-framework-6 ef-core-3.1 nodatime