实体框架一个上下文很多数据库

时间:2014-11-19 12:28:45

标签: c# asp.net-web-api entity-framework-4

在我的应用中,我有一个上下文,但用户可以在登录期间选择多个数据库中的一个。所有这些数据库都基于相同的上下文,并且它们的连接字符串在web.config中配置。

我有一个缓存用户详细信息的类:

public class UserDetais
{
    public string Token { get; set; }
    public string ConnectionString { get; set; }
}

用户登录后,会将新的UserDetails对象添加到缓存中以供以后的请求使用。

接收到进一步的请求后,控制器从缓存中获取用户的详细信息并将其传递给服务,例如:

public class CustomerTypeController : ApiController
{
    private readonly ICustomerTypeService customerTypeService;

    public CustomerTypeController(ICustomerTypeService customerTypeService)
        : base(logService)
    {
        this.customerTypeService = customerTypeService;
    }

    protected override void Initialize(HttpControllerContext controllerContext)
    {
        base.Initialize(controllerContext);

        var token = controllerContext.Request.Properties["token"] as string;
        var details = UserCache.Get(token);

        customerTypeService.SetUserDetails(details);
    }    
 }

然后,服务在工作单元中设置用户详细信息,在此阶段,工作单元根据用户的连接字符串创建新的上下文。

这个解决方案有效,但它看起来有点hacky。有没有更好的方法来实现单上下文多数据库策略?

0 个答案:

没有答案