2

我在 MVVM 应用程序中使用实体框架(代码优先)。一些“文件”具有草稿、已确认等状态,当文件被确认时,我想确保没有进行更改,想想发票,一旦确认/签发,用户就不能更改内容。

我读过实体框架中的只读内容,但视图、数据库级别控制或 AsNoTracking 不适合这种情况(我认为)

一些想法?

4

2 回答 2

0

我从来没有这样做过,但你可以接受我在这个答案中看到的想法。

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

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

于 2013-08-14T17:39:15.913 回答
0

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

尽管我会建议在数据库中使用更新触发器(首选方法),但该触发器执行相同操作,以便在使用该数据库的任何应用程序中执行逻辑。

于 2013-08-14T19:39:00.140 回答