我继承了一个项目,我们有两个不同的Entity Framework 6上下文指向两个不同的数据库。数据库共享一些相关的记录,但要查询这两个记录,我们必须这样:
using (var ctx1 = new MainContext())
{
using (var ctx2 = new SecondaryContext())
{
var personIds = (from oc in ctx2.OrderContacts
join o in ctx2.Orders on oc.OrderId equals o.OrderId
where o.Order_rowID == orderId
select oc.PersonId).Distinct();
if (personIds.Count() > 0)
{
foreach (var personId in personIds)
{
Contact contact = ctx1.ContactSet.Where(x => x.ExternalId == personId).SingleOrDefault();
if (contact == null)
{
// Do something to create a record
}
}
}
}
}
在上述情况下,主上下文中的联系表存储ExternalId,它是辅助上下文的Person表中的GUID。
我在两个数据库之间设置了链接服务器,所以我希望能够在主上下文中完成所有连接,而无需从服务器打开第二个连接。这两个上下文最初都是作为Code First EF解决方案创建的(在不同的应用程序中)。