只读部分实体

时间:2013-08-14 17:25:26

标签: entity-framework ef-code-first

我正在使用MVVM应用程序中的Entity Framework(代码优先)。一些“文档”具有状态,如草稿,已确认等,当确认文档时我想确保不进行更改,考虑发票,一旦确认/发布,用户就无法更改内容。

我在Entity Framework中读到了只读,但是视图,数据库级别控制或AsNoTracking不适合这种情况(我认为)

一些想法?

2 个答案:

答案 0 :(得分:0)

我从来没有这样做,但你可以看一看我in this answer的想法。

基本上你可以覆盖你的DbContext的SaveChanges()方法(或者可能是DetectChanges())来查看实体的原始状态是否包含某种标记,将其标记为只读(如FINAL bool列那样)当真实意味着它被锁定)。当保存或检测发生时,您可以使实体看起来没有被修改,也不会被保存。

这只是一个想法,我不知道这是否真的可能。

答案 1 :(得分:0)

在您的实体中实施IValidatableObject,并在确认状态并修改实体状态时抛出验证异常。

虽然我建议在数据库中使用更新触发器(首选方法),但是在使用该数据库的任何应用程序中都会执行逻辑。