C# 使用两个上下文

C# 使用两个上下文,c#,entity-framework,C#,Entity Framework,Im使用EF(实体框架代码优先)和具有统一性(依赖项注入)和工作单元的存储库模式。我有两个上下文,但我想根据请求使用其中一个上下文。大概是这样的: public bool Save(User user, RequestTyoe request) { //这里应用一些根据请求上下文决定的模式 使用 有什么建议吗 真的,我不知道你用什么图案 谢谢如果您需要通用存储库和不同的上下文,那么您可以指定要传递的上下文类型 public abstract class GenericRepository<

Im使用EF(实体框架代码优先)和具有统一性(依赖项注入)和工作单元的存储库模式。我有两个上下文,但我想根据请求使用其中一个上下文。大概是这样的:

public bool Save(User user, RequestTyoe request)
{
//这里应用一些根据请求上下文决定的模式 使用

有什么建议吗

真的,我不知道你用什么图案


谢谢

如果您需要通用存储库和不同的上下文,那么您可以指定要传递的上下文类型

public abstract class GenericRepository<C, T> : 
    IGenericRepository<T> where T : class where C : DbContext, new()
公共抽象类GenericRepository:
IGenericRepository,其中T:class,其中C:DbContext,new()

您可以使用CastleWindsor轻松注册多个服务:

努吉:


我不明白-您有两个不同的上下文,它们都保存
User
对象?上下文之间的区别是什么?区别是列的数量…好的,我有我的应用层。在这一层中,我有一个服务(
UserService
,它实现了一个接口:
IUserService
),在其中我有一个属性:
IUserRepository
(该属性使用Unity初始化);现在,您告诉我,在我的服务的实现中,我应该用
igenericreportory
替换
IUserRepository
,如果您想切换上下文。
public abstract class GenericRepository<C, T> : 
    IGenericRepository<T> where T : class where C : DbContext, new()
public class UserServiceInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Component.For<IUserService1>()
            .ImplementedBy<UserService1>()
            .LifestyleTransient());

        container.Register(Component.For<IUserService2>()
            .ImplementedBy<UserService2>()
            .LifestyleTransient());
    }
}
public class MyController : Controller
{
    private IUserService1 _userService1;
    private IUserService2 _userService2;

    public MyController(IUserService1 userService1, IUserService2 userService2)
    {
        _userService1 = userService1;
        _userService2 = userService2;
    }
}