c# - EFCore 中 QueryType 的正确日期时间转换是什么?
问题描述
我的数据库中有一个我想用 EF Core 阅读的视图。
我用视图读取的数据是一个 int 列,我可以通过以下 SQL 语句将其转换为正确的日期:
CONVERT(NVARCHAR, DATEADD(MI, wf_activate, '1899-30-12'), 101) + ' ' +
CONVERT(NVARCHAR, DATEADD(MI, wf_activate, '1899-30-12'), 110) AS Start
这会将数据正确转换为:
12/17/2018 12-17-2018
现在我想通过 EF Core 2.1 使用这个模型访问我的视图:
/// <summary>
/// Basis data from an ELO workflow.
/// </summary>
public class WorkflowStrangeUsersModel
{
/// <summary>
/// Gets or sets the workflow start date.
/// </summary>
public DateTime Start { get; set; }
}
和这个背景:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<WorkflowStrangeUsersModel>().ToView("INTRANET_WorkflowsStrangeUsers");
}
它适用于字符串和 int 等,但在这种情况下,日期时间会引发错误:
读取属性“WorkflowStrangeUsersModel.Start”的数据库值时发生异常。预期类型为“System.DateTime”,但实际值为“System.String”类型。
所以我假设我转换为 101 / 110 (美国日期格式)是错误的。我也尝试了本地格式(德语)和默认格式(0),但同样的错误。
任何的想法?
解决方案
也许您可以将日期检索为 int,然后使用 C# 将其转换为 Datetime。您可以为此使用 2 个属性,StartInt 和 StartDate(该属性是只读的)
推荐阅读
- ubuntu-16.04 - 运行 Modelsim-Altera 时的问题
- c++ - 如何正确旋转这些房屋?
- domain-driven-design - DDD 存在问题,并且在一个事务中仅更改一个 Aggegate
- extjs - 如何在 ExtjS 6/7 中导入 ES6 模块
- discord.py - 不和谐.py | 编辑角色权限
- rundeck - Rundeck - 在远程 ansible 服务器上执行 ansible playbook
- jwt - 创建签名的 JWT 以替换 Bearer 令牌
- c - Invocation of structure member info display function spits garbled characters
- swagger - Swagger UI 和 Vercel:位置 1 的 JSON 中的意外标记 <
- gitlab-ci - 如何允许多个打开的合并请求到同一个目标分支?