我在实施检查以阻止开发人员在初始创建后手动或以编程方式更新代码中的主键时遇到问题。
partial class User
{
public User()
{
this.UserId = sGuid.NewSGuid(sGuidType.SequentialAtEnd);
}
partial void OnUserIdChanging(Guid value)
{
//throw if its an edit...
throw new DbEntityValidationException("Cannot mutate primary key");
}
}
如果我正在编辑/更新一个对象,这很好用,但它实际上不会让我首先创建一个新实体。有什么方法可以检查它是新实体还是现有实体?
在此先感谢,皮特
更新:
典型的我总是在发布后找到答案 -_- !感谢您的回答家伙,我会将您的其中一个标记为正确答案,因为它们是有效的替代方案。
if (this.EntityState != System.Data.EntityState.Detached)
{
throw new DbEntityValidationException("Cannot mutate primary key");
}