EF Core - NodaTime 类型的脚手架?
Posted
技术标签:
【中文标题】EF Core - NodaTime 类型的脚手架?【英文标题】:EF Core - Scaffolding to NodaTime types? 【发布时间】: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 一般来说 - 我对脚手架定制的可能性一无所知,除了我发现的这样的事情:***.com/questions/37679367/…,blog.tonysneed.com/2018/05/27/… 我想得到任何时候我需要脚手架的可能性模型(即模型已更改)我将始终获得相同的数据类型。如果我理解正确(也许不是) - 对 OnModelCreating 的更改可能不会是“恒定的”。
我无法理解您的问题的根本缺陷是我以前从未遇到过 NodaTime。但是,是的,我认为你是对的。我的建议是将数据库中的数据解释为 pocos,而您的问题是为 pocos 的创建搭建脚手架。所以,这可能不是正确的解决方案。
@NateW 通常-我尝试将 DateTime 替换为适当的 NodaTime 等效项(LocalDate
、Instant
,具体取决于 SQLServer 类型)并且效果很好(除了为 EF 声明 NodaTime 类型的问题OData),但由于项目类型非常多,我希望有一种自动方法来确保它始终符合我的要求。
啊,我明白了。比使用 DateTime
搭建类然后使用查找和替换工具更好的方法...
【参考方案1】:
这在https://github.com/dotnet/efcore/issues/20114中讨论过
建议使用EFCore.SqlServer.NodaTime 库。
【讨论】:
谢谢,只是为了确保 - 这个包也适用于代码生成/脚手架? 再想一想——看来无论如何我对 Noda 有第二个问题,这可能会让我无法使用它:github.com/OData/WebApi/issues/1626 不确定脚手架。试试看,请告诉我们。但是,是的 - OData 问题似乎有问题。以上是关于EF Core - NodaTime 类型的脚手架?的主要内容,如果未能解决你的问题,请参考以下文章
将 EF Core 搭建到现有 DbContext 的脚手架
.NET Core EF 脚手架引发无法找到提供程序程序集“Source=localhost”
如何在 EF Core 3.1 中使用脚手架流程更新我的实体 - 执行超时已过期
如何解决在 Linux(Ubuntu 18.04)中进行 EF Core 数据库脚手架的“无法使用 Kerberos 进行身份验证”问题?有啥解决办法吗?