我正在使用Entity Framework 6,我想要做的是通过主键获取条目,并仅通过Entity Framework更新条目中的一个属性。
我的代码如下所示:
private static void UpdateByEntry()
{
using (var context = new EntityFrameworkTestDBContext())
{
var request = new Request
{
requestId = 1
};
var entry = context.Entry(request);
entry.Property(x => x.updateDate).IsModified = true;
entry.Property(x => x.updateDate).OriginalValue = DateTime.Now;
Console.WriteLine("state of updateDate {0}", entry.Property(x => x.updateDate).IsModified);
Console.WriteLine("state of entry {0}", entry.State);
context.SaveChanges();
}
}
该计划的结果是:
state of updateDate False
state of entry Detached
并且updateDate
后列context.saveChanges()
未更新。
我在此页面https://msdn.microsoft.com/en-us/library/jj592677(v=vs.113).aspx检查了msdn。他们的示例代码如下所示,我看不出任何差异。
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
context.Entry(blog).Property(u => u.Name).IsModified = true;
// Use a string for the property name
context.Entry(blog).Property("Name").IsModified = true;
}
据说
将属性标记为已修改会强制在调用SaveChanges时将更新发送到属性的数据库,即使该属性的当前值与其原始值相同也是如此。
但是我标记为已修改且属性未在数据库中更新。
我的问题是:即使我已将其更改为isModfified
,为什么属性updateDate
的{{1}}为false。
如何只更新条目中的一个属性?
提前致谢