C# 如何使用链接服务器将两个单独的EF上下文转换为一个?

C# 如何使用链接服务器将两个单独的EF上下文转换为一个?,c#,entity-framework,C#,Entity Framework,我继承了一个项目,其中有两个不同的实体框架6上下文指向两个不同的数据库。数据库共享一些相关记录,但要查询这两个记录,我们必须这样做: using (var ctx1 = new MainContext()) { using (var ctx2 = new SecondaryContext()) { var personIds = (from oc

我继承了一个项目,其中有两个不同的实体框架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
                            }
                        }
                    }

                }
            }
在上述情况下,主上下文中的Contact表存储一个ExternalId,它是辅助上下文的Person表中的GUID


我在两个数据库之间设置了一个链接服务器,因此我希望能够在主上下文中执行所有连接,而不必从服务器打开第二个连接。这两个上下文最初都是在不同的应用程序中作为代码优先EF解决方案创建的。

如果您要查询两个数据库,您不应该在第一个查询中对每一行执行查询,而是对每个数据库执行一个查询,以获取您所需的所有适当行。哦,我知道。这只是我继承的代码的一个示例。我通常会从第一个获取所有ID,用in子句查询第二个ID,然后在本地连接它们。我希望我可以将一些负载转移到SQL server,让它跨链接的服务器进行连接。这并不是一个很好的例子,只是一个简单的例子来回答问题。作为一个想法-SQL端的视图如何使用链接服务器\DB,然后将该视图添加到EF上下文中我如何将该视图添加到EF上下文中?上下文首先以代码的形式构建,我们在代码中添加了新的表。我是使用迁移将视图视为上下文中的一个实体,还是必须手动对其进行编码?