linq 从不同的数据库获取数据ASP.NET MVC

yquaqz18  于 2022-12-25  发布在  .NET
关注(0)|答案(1)|浏览(161)

在我的ASP.NETMVC应用程序中,我想从两个上下文中获取数据,并将其合并并传递给视图。
现在,我这样做,

private zSqlLink dbs = new zSqlLink();
private zSqlData db = new zSqlData();

public ActionResult PendingSelfTasks() 
{
    IEnumerable <SelfCareTasks> pendingTasks = new List <SelfCareTasks> ();

    var list = dbs.SelfCareTasks.ToList().Where(x => x.Is_Service_Accepted == false && x.Status == true);

    var TaskList = (
        from d in list join c in db.Customer on d.Customer_Id equals c.Id 
        join ser in db.Services on d.Service_Id equals ser.Id 
        where d.Is_Service_Accepted == false && d.Status == true 
        select new SelfCareTasks 
        {
            Id = d.Id,
            CustomerName = c.Sur_Name + c.Name,
            ServiceName = ser.Service_NameEng,
            ServicePrice = d.Service_Price,
        }).ToList();

    return View(TaskList);
}

我所做的是,首先我创建了list,从一个上下文中获取主记录并将它们存储在那里,然后我创建了另一个列表,并在那里将list与其他数据库值连接以获取所需的数据。在这里,对于list,我获取了数据,当我将其与另一个上下文合并时,返回时没有数据。
我做错什么了吗?

wn9m85ua

wn9m85ua1#

我不知道你的模型关系是什么,但是你已经知道你不能对不同的数据库进行集体查询。你需要对每个数据库进行单独的查询,并在代码中Map数据。当然,基于Panagiotis Kanavos的回答,你可以有其他不同的看法

private zSqlLink dbs = new zSqlLink();
private zSqlData db = new zSqlData();

public ActionResult PendingSelfTasks() 
{
    //Get the collections from databases separately 
    var list = dbs.SelfCareTasks.Where(x => x.Is_Service_Accepted == false && x.Status == true).ToList();

    var listIds = list.Select(x => x.Id).Tolist();
    var customer = bd.Customer.Where(x => listIds.Contains(x.Id)).ToList();

    //Them map all you need in the code
    foreach(var selfCareTasks in list)
    {
    }
    
    return View(TaskList);
}

相关问题