如何将两个单独的EF上下文转换为一个具有链接服务器的上下文?

时间:2015-02-23 21:45:38

标签: c# entity-framework

我继承了一个项目,我们有两个不同的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解决方案创建的(在不同的应用程序中)。

0 个答案:

没有答案