[英]How to disable insert in Entity Framework?
有没有办法禁止在实体框架中插入实体?
我正在使用DDD,并且在特定的有界上下文中,users表的一些必需数据库字段没有意义(在此上下文中)。 所以,我想从User实体中删除它们,但是这样做我失去了将新用户保存到数据库的能力。 哪个是好的,因为在这种情况下,我不应该创建用户。
我的第一个想法是禁用用户实体上的插入(但允许更新)。
这可行吗? 或者,这种情况还有另一种解决方案吗?
您无法禁用插入,但在这种情况下,您可以找到是否标记了插入和触发异常的任何实体。
执行此类处理的最佳位置是覆盖SaveChanges
方法:
public override int SaveChanges(SaveOptions options)
{
if (ObjectStateManager.GetObjectStateEntries(EntityState.Added)
.Where(e => !e.IsRelationship)
.Select(e => e.Entity)
.OfType<User>()
.Any())
{
throw new InvalidOperationException("User cannot be inserted");
}
return base.SaveChanges(options);
}
这是运行时行为,但由于EF在修改操作之间没有差异(所有都在单个SaveChanges
),因此无法在编译时检测插入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.