Entity Framework 5.0 - 删除对象而不检索它
Entity Framework 5.0 - Delete object without retrieving it
我想删除这样的数据库条目:
public bool DeletePersonById(int id)
{
var p = new Person() { ID = id };
//ctx.Person.Attach(p);
ctx.Entry<Person>(p).State = EntityState.Deleted;
return true;
}
然后我收到带有以下消息的 InvalidOperationException:
The key field 'FirstName' cannot have a value of null. A non-null value is required for the key fields defined on type 'Person'.
所以,对我来说,在这种情况下,属性 是否可以为 null 并不重要,因为我只想删除完整的 row/object。
对象加载 AsNoTracking()
(from p in ctx.Person.AsNoTracking() where p.ID == id select p).FirstOrDefault();
好的,我的 table 没有主键,在此数据库上添加 pk table 并重新生成 ef 模型后,上面的代码有效。
我想删除这样的数据库条目:
public bool DeletePersonById(int id)
{
var p = new Person() { ID = id };
//ctx.Person.Attach(p);
ctx.Entry<Person>(p).State = EntityState.Deleted;
return true;
}
然后我收到带有以下消息的 InvalidOperationException:
The key field 'FirstName' cannot have a value of null. A non-null value is required for the key fields defined on type 'Person'.
所以,对我来说,在这种情况下,属性 是否可以为 null 并不重要,因为我只想删除完整的 row/object。
对象加载 AsNoTracking()
(from p in ctx.Person.AsNoTracking() where p.ID == id select p).FirstOrDefault();
好的,我的 table 没有主键,在此数据库上添加 pk table 并重新生成 ef 模型后,上面的代码有效。