我正在使用MVVM应用程序中的Entity Framework(代码优先)。一些“文档”具有状态,如草稿,已确认等,当确认文档时我想确保不进行更改,考虑发票,一旦确认/发布,用户就无法更改内容。
我在Entity Framework中读到了只读,但是视图,数据库级别控制或AsNoTracking不适合这种情况(我认为)
一些想法?
答案 0 :(得分:0)
我从来没有这样做,但你可以看一看我in this answer的想法。
基本上你可以覆盖你的DbContext的SaveChanges()方法(或者可能是DetectChanges())来查看实体的原始状态是否包含某种标记,将其标记为只读(如FINAL bool列那样)当真实意味着它被锁定)。当保存或检测发生时,您可以使实体看起来没有被修改,也不会被保存。
这只是一个想法,我不知道这是否真的可能。
答案 1 :(得分:0)
在您的实体中实施IValidatableObject
,并在确认状态并修改实体状态时抛出验证异常。
虽然我建议在数据库中使用更新触发器(首选方法),但是在使用该数据库的任何应用程序中都会执行逻辑。