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 模型后,上面的代码有效。