Cuo*_*yen 3 mapping datetime entity-framework nullable ef-code-first
我的项目使用 EF Code First 运行得很好。但现在我需要在数据库中添加 1 个字段(例如 DateTime 类型的 CreateDate),该字段可以为 null。
因此,我编写了脚本以向 DB(CreateDate (datetime) null ) 添加 1 个字段,然后修改模型以包含新字段
public class Account()
{
...
public DateTime CreateDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
下面是使用 FluentApi 创建此字段选项的代码
Property(x => x.CreateDate).IsOptional();
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试获取帐户的任何实例时,当我修改字段时出现错误,如下所示:
public DateTime? CreateDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后就可以了。
你们能给我解释一下吗?为什么我的 Fluent api 不起作用或者我做错了什么?
谢谢。
您已经在问题中给出了解决方案...:) 您必须将新属性声明为:
public DateTime? CreateDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
DateTime?是可为 null 的类型,意味着CreateDate可以为 null。
这是必要的,因为当从数据库中获取记录并且它CreateDate是NULL模型上的支持属性时,应该接受 null 作为可能的值。如果您将属性声明为仅DateTime CreateDate框架,则会出现错误,通知您无法将NULL值分配给不接受NULL.
所以你应该有:
public class Account()
{
...
public DateTime? CreateDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)