对于我的项目,我需要将数据库分解为多个上下文以进行调制分离,例如:
在代码上,我需要有一个工作单元,将两者结合起来用于相同的交易代码。
public class MyClass(IUserRepository userRepository, IBankRepository bankRepository, IUnityOfWork uow)
{
// uow start transaction
// IUserRepository is inside ContextA
// IBankRepository is inside ContextB
// uow end transaction(Commit)
}
参考EF 6. +
答案 0 :(得分:1)
您将遇到的第一个问题是,在没有大量复杂的情况下,上下文中的任何类型/表都不能重复。例如,如果UserContext中的表与BankAccount上下文中的表相关,那么您不能在模型中具有该关系,因为那样您将在两个位置定义相同的表 - 因此类型 - 。我从来没有这样做过,但我看不到它在任何好的地方都会结束。
如果你真的真的需要将你的上下文分成两个或更多,一种方法可能是让一个模型包含所有内容,另外一个类将包装每个子系统的上下文,它只公开该子系统所需的类型。这是适配器或介体模式。