EF6设置日期时间为NULL,更新
问题描述:
你可能会认为这是其他各地同样的问题,但我检查,并不能找到答案,所以请任何人都可以帮助...EF6设置日期时间为NULL,更新
我有这个类其中有许多其他属性,但让我们专注于此...
public class MyClass
{
public DateTime? EndDate { get; set; }
public string State { get; set; }
}
EndDate和State都在数据库中有一些值。例如, EndDate = 2016-11-20 00:00:00和State =“已关闭”。
我需要做的是改变这些值,所以我有一个动作按钮,这是否......
using (MyContext ctx = new MyContext())
{
MyClass rec = new MyClass { Id = Id };
db.MyClasses.Attach(rec);
rec.State = "Opened";
rec.EndDate = null;
db.Configuration.ValidateOnSaveEnabled = false;
ctx.SaveChanges();
db.Configuration.ValidateOnSaveEnabled = true;
}
但是,当我运行此命令,国家是数据库更改为“打开”但EndDate仍然与以前一样,我的意思是它不会变成NULL。
我在这里做错了什么? 感谢
答
这是因为你没有真正改变结束日期:
MyClass rec = new MyClass { Id = Id };
db.MyClasses.Attach(rec);
...
rec.EndDate = null;
但它是null
当你连接的实体。
所以,你一定要告诉该属性被修改变更跟踪:
db.Entry(rec).Property(r => r.EndDate).IsModified = true;
嗯,这做的工作。稍微改变... db.Entry(rec).Property(r => r.EndDate).IsModified = true;谢谢。 –
但那么'rec.State'如何改变没有问题? – Sampath
当'rec'初始化时@Sampath'rec.State'可能是'null'。 –