[英]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.