.Net Core查询来自2个不同数据库的数据

时间:2017-05-30 13:47:49

标签: c# string entity-framework .net-core string-formatting

我运行了一个.Net Core项目,我正在使用两个不同的数据库(一个MySQL数据库和一个PostGreSQL数据库)。我设置了它们,它们都在我当前的控制器中实现 - TripController.cs

TripController.cs

public IActionResult Index()
{
    var viewModels = new List<TripViewModel>();
    var Dids = _tripContext.Dids.ToList();
    foreach (var Did in Dids)
    {
        IQueryAble<Tripmetadata> trips = _tripContext.Tripmetadata.Where(t => t.Did == Did.Did);
        var tripsCount = trips.Count()
        //--------------------- I believe error is here ---------------------
        var alias = _context.Devices.Where(d => (long.Parse(d.Did)) == Did.Did).Select(d => d.Alias).ToString();
        // ------------------------------------------------------------------
        var viewModel = new TripViewModel
        {
            TripCount = tripsCount,
            didElement = Did,
            Alias = alias
        };
        viewModels.Add(viewModel)
    }

    return View(viewModels);
}

_context是MySQL数据库,_tripContext是PostGreSQL数据库。

两个数据库都有一个名为Did的字段,我需要使用它。对于PostGreSQL数据库,我需要使用它来获取给定tripCount的行程(Did)。但是对于MySQL数据库,我需要使用Did来获取设备的alias

当我尝试使用TripController中的上述代码来获取a的别名时,在我的视图中显示它时会得到一个奇怪的值:

Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String]

如此处所示:enter image description here

我使用一个名为TripViewModel的viewModel,我将其传递给我的View:

TripViewModel.cs

public class TripViewModel
{
    public int TripCount {get;set;}
    public long DidElement {get;set;}
    public string Alias {get;set;}
}

如何在我的视图中写出正确的Alias

我尝试了很多方法,但却没有产生我需要的结果。

1 个答案:

答案 0 :(得分:1)

我设法找到了解决方案。

我的问题是在我的EF查询结束时没有添加.Single()

我还发现这篇文章是重复的。但是,在this

之前,我不知道我的问题是什么