【发布时间】:2016-09-02 17:45:33
【问题描述】:
我有以下课程:
public class Foo
{
[Key]
public int ID { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
[Required]
public float Quantity { get; set; }
}
我正在使用以下代码更新属性Quantity:
Foo f = new Foo {ID = 2, Quantity = 10}; // Updated object
DbSet dbSet = this.Set(f.GetType());
dbSet.Attach(f);
var be = Entry(f);
be.Property("Quantity").IsModified = true;
DBContext.SaveChanges();
但是,代码会产生如下异常:
“‘姓名’字段为必填项”
据我所知,最后一段代码应该只更新字段Quantity,但它也考虑了字段Name。
我可以通过在更新之前获取对象来避免这个错误
Foo f = DBContext.Foos.Single<Foo>( x => x.ID == 2);
f.Quantity = 10;
DBContext.SaveChanges();
但我认为这不是一个好的选择,因为它会花费两次数据库访问。
任何建议将不胜感激。
【问题讨论】:
标签: entity-framework ef-code-first entity-framework-6