[英]Entity Framework with multiple databases
无论如何,是否可以在单个EF上下文中映射多个SQL Server数据库? 例如我正在尝试做这样的事情
select order from context.Orders
where context.Users.Any(user => user.UserID == order.UserID)
我想按照以下方式获得生成的SQL:
select .. from store.dbo.order where userID in
(select userID from authentication.dbo.user)
并请注意,数据库名称不同-在一个位置存储,在另一位置存储身份验证。
我发现一些文章涉及多个模式(在这种情况下为“ dbo”),但没有一篇涉及多个数据库名称。
作为一种可能的解决方法,您可以在第一个数据库中的第二个数据库中创建表的视图,并将映射指向该视图。
我很确定这是不可能的。 上下文源自DbContext 。
DbContext实例代表工作单元和存储库模式的组合,因此它可用于从数据库查询并将更改分组在一起,然后将更改作为单元写回到商店。 DbContext在概念上类似于ObjectContext。
DbContext的配置(连接字符串,架构等)特定于单个数据库。
这是不可能的。 上下文的概念低于数据库的概念,允许这样做可能是一个不好的做法。 允许这样的事情可能会使开发人员忘记他们正在处理两个数据库,而要注意由此产生的所有性能影响。
我想您仍然应该可以使用两个上下文并编写优美的代码。
var userIds = AuthContext.Users
.Where(user => user.Name = "Bob")
.Select(user => user.UserId)
.ToList();
var orders = StoreContext.Orders
.Where(order => userIds.Contains(order.UserId))
.ToList()
首先在身份验证数据库上下文上执行查询,以便为第二次查询提供参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.