gpt4 book ai didi

asp.net-mvc - 使用 Entity Framework 连接两个数据库中的表

转载 作者:行者123 更新时间:2023-12-02 17:29:13 26 4
gpt4 key购买 nike

我正在开发 ASP.NET MVC 4 Web 应用程序。我正在使用Entity Framework作为数据访问层,使用数据库优先方法(.edmx 文件)。

目前,我在两个不同数据库中定义的联接表中遇到问题(即我有两个 .edmx 文件)。

例如,如果我想连接表,我将执行以下查询:-

public ActionResult AutoComplete(string term)
{
var tech = repository.AllFindTechnolog(term).Take(100);//Call to the first database
var resources = repository.GetResources(tech.Select(a => a.IT360ID.Value).ToArray(), false);//call to the second database

var query = from techItems in tech
join resourcesItems in resources
on techItems.IT360ID.Value equals resourcesItems.RESOURCEID // join based on db2ID
orderby techItems.PartialTag
select new //code goes here

return Json(query, JsonRequestBehavior.AllowGet);
}

我将对数据库进行两次单独的调用,并在应用程序服务器内进行一次联接,这不是最佳的面向性能的解决方案。理想情况下,连接将完全发生在数据库引擎内部。

我知道存储过程将允许我纯粹在服务器上连接来自不同数据库的表,但我不想使用 SP,因为它会使我的代码更难以维护和更难以测试。

所以我正在寻找一种解决方案,可以使用 Entity Framework 进行连接并生成单个数据库连接?

最佳答案

如果您想通过单个数据库调用来完成此操作,则必须在数据库中创建一个 View ,以连接来自单独数据库的 2 个表。创建 View 后,您可以将其作为单个对象添加到 EF,您可以进一步操作该对象并进行查询。 View 基本上是一个表,它很容易维护并且很容易绑定(bind)到强类型模型

另一种方式,与您发布的类似,您可以查询单独的 .edmx 文件,然后加入它们。是的,有 2 次对数据库的调用,但应该不会那么昂贵,并且可能不会注意到差异。

using(var db = new MyEntities())
using (var db2 = new MyEntities2())
{
var one = db.Table1.AsEnumerable();
var two = db2.Table2.AsEnumerable();

var result = from o in one
join t in two on o.Id equals t.Id
// blah blah

}

关于asp.net-mvc - 使用 Entity Framework 连接两个数据库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com