EntityFramework - 使用模块中的实体而无需访问数据库

时间:2013-05-02 09:04:29

标签: entity-framework module prism code-first

我目前正在创建一个高度模块化的应用程序(使用Prism-Framework),并通过CodeFirst中实现的EntityFramework访问数据库。

我的目标是从创建的实体的“正常”使用中将数据实际写入数据库。写入数据库只能由main-Application完成,但模块仍然可以使用实体类。

因此,他们必须知道DataContext或至少是Entiy Classes。但问题是:如果模块更改了实体类的属性,而主应用程序由于某些其他原因而在DataContext上调用“SaveChanges()”,则模块所做的更改将自动保存到数据库而不会main-应用程序控制它。

如何防止此行为?模块必须无法更改数据库内容,除非通过定义的接口连接到主应用程序。

我的第一个想法是在每个实体类中实现ICloneable,并且只将实体对象的克隆传递给要使用的模块。然后,如果模块要求更改数据库,则将模块传递给主应用程序,后者更新原始对象并在DataContext上调用“SaveChanges()”。

你们认为这是一个可行的解决方案,还是有更好的方法来实现这种行为?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用DbSet.AsNoTracking() Method启用数据库中读取DbContext无法跟踪的数据。