使用实体框架 C# 将字符串转换为日期

本文关键字:字符串 转换 日期 实体 框架 | 更新日期: 2023-09-27 18:32:53

我正在尝试使用实体框架,并面临数据库中的类型与我的模型不匹配的问题。

具体来说,我在类中String日期字段,在SQL Server数据库中date字段。因此,我在将数据加载到模型中时出现有关类型不正确的错误。

我附上了一些代码,我想可以应用强制转换。

public class MovementMap : EntityTypeConfiguration<Movement>
{
    public MovementMap()
    {
        ToTable("viewMovement", "met");
        HasKey(e => e.IdMovement);
        Property(r => r.DateMovement).HasColumnName("dateMovement"); 
        //Type of DateMovement - String, but column dateMovement in db has type date.
    }
}

如何在加载时或任何时候转换它?很高兴收到任何想法!

使用实体框架 C# 将字符串转换为日期

您可以在类中向DateMovement属性添加 Column 属性。这将告知实体框架数据库值是一个Date

[Column(TypeName="Date")]
public string DateMovement { get; set; }

话虽如此,我建议将 DateMovement 属性更改为一致性DateTime

如果不想更改模型,可以通过向代码示例添加HasColumnType调用来执行此配置:

public class MovementMap : EntityTypeConfiguration<Movement>
{
    public MovementMap()
    {
        ToTable("viewMovement", "met");
        HasKey(e => e.IdMovement);
        Property(r => r.DateMovement).HasColumnName("dateMovement").HasColumnType("Date"); 
    }
}