.Net Core 查询来自 2 个不同数据库的数据
.Net Core query data from 2 different databases
我有一个 .Net Core 项目 运行,我正在使用 2 个不同的数据库(一个 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 数据库,我需要使用它来获取给定 Did
的行程量 (tripCount
)。但是,对于 MySQL db,我需要使用 Did
来获取设备的 alias
。
当我尝试使用 TripController 中的上述代码获取 a 的别名时,在我的视图中显示它时,我得到了一个奇怪的值:
Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String]
如下所示:
我使用一个名为 TripViewModel 的视图模型,并将其传递给我的视图:
TripViewModel.cs
public class TripViewModel
{
public int TripCount {get;set;}
public long DidElement {get;set;}
public string Alias {get;set;}
}
如何让它在我看来写正确的 Alias
?
我试过很多方法都没有得到我需要的结果。
我设法找到了解决方案。
我的问题是没有在我的 EF 查询末尾添加 .Single()
。
我还发现这个 post 是重复的。但是我不知道我的问题是什么,直到偶然发现 this:
我有一个 .Net Core 项目 运行,我正在使用 2 个不同的数据库(一个 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 数据库,我需要使用它来获取给定 Did
的行程量 (tripCount
)。但是,对于 MySQL db,我需要使用 Did
来获取设备的 alias
。
当我尝试使用 TripController 中的上述代码获取 a 的别名时,在我的视图中显示它时,我得到了一个奇怪的值:
Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String]
如下所示:
我使用一个名为 TripViewModel 的视图模型,并将其传递给我的视图:
TripViewModel.cs
public class TripViewModel
{
public int TripCount {get;set;}
public long DidElement {get;set;}
public string Alias {get;set;}
}
如何让它在我看来写正确的 Alias
?
我试过很多方法都没有得到我需要的结果。
我设法找到了解决方案。
我的问题是没有在我的 EF 查询末尾添加 .Single()
。
我还发现这个 post 是重复的。但是我不知道我的问题是什么,直到偶然发现 this: