我正在开发一个应用程序,其中有大约5个上下文,每个上下文对应于数据库中的数据库模式(如Accounts,Sales,Purchases等模式),它们都连接到同一个数据库。
现在我正在构建一个在数据库中存储审计的功能,这是所有上下文的共享功能,基本上,我覆盖SaveChanges
方法,并在ChangeTracker.Entries
中保存Audit
在CommonContext
中存在的表,现在我想在所有上下文中应用相同的代码,我在考虑这两个选项:
- 在每个上下文中都有一个表,并将审核代码复制/粘贴到所有上下文中(可怕的选项)。
- 在所有上下文中调用并打开CommonContext
,这在我看来并不是很好的做法(在另一个上下文中打开一个上下文!,我将不得不引用CommonContext库)。
这是我能想到的唯一选择,所以我在这里寻求帮助!
我正在使用EF 6数据库。
答案 0 :(得分:0)
您要做的是创建一些常见的跨领域关注基础架构,因此复制和继承不是这里的好选择。您应该在上下文中创建具有公共接口访问实体的存储库,而不是创建存储库的装饰器以用于审计目的,在内部保存您的CommonContext。您还必须确保CommonContext和其他人共享相同的连接,并在相同的TransactionScope下运行。