如何告诉实体框架它不应该创建或修改表中的行,同时允许它读取数据并为其创建对象?
我看到的唯一可能就是将所有列设置为Computed,这是正确的方法吗?
答案 0 :(得分:2)
有几种方法,一种方法可能是覆盖您的保存更改并捕获任何保存实体的尝试
var changeSet = ChangeTracker.Entries<IDoNotSave>();
if (changeSet != null)
{
foreach (var entry in changeSet.Where(c => c.State != EntityState.Unchanged))
{
entry.State = EntityState.Unchanged;
}
}
然后只需将IDoNotSave界面添加到您不想更改的实体中。上面应该捕获添加,删除或修改的尝试。任何保存对实体的更改的尝试都应该无声地失败。当然,如果符合要求,您可以抛出错误而不是将EntityState更改为Unchanged。