我在做你认为简单的任务时遇到了很多麻烦。在我的 Web 应用程序中显示表格时将用户 ID 更改为用户名。这是从表中检索到的数据:(删除了不必要的信息)
var data = (from o in _mainDbContext.blog
select new blogViewModel
{
Id = o.id,
title = o.title,
Editor= o.editorID,
} );
editorID
是由 ASP.Net Identity 系统创建的用户 ID。我需要加载相应的用户名并将其放置在所有获取的条目的编辑器字段中。
到目前为止我尝试过的:
就像是:
var data = (from o in _mainDbContext.blog
join u in _userManager.Users on o.editorID equals u.UserName
select new blogViewModel
{
Id = o.id,
title = o.title,
Editor= o.editorID,
} );
不起作用,因为 EF Core 不支持连接来自不同上下文的表。
使用foreach
类似:
foreach (var row in data)
{
var user = await _userManager.FindByIdAsync(row.editorID);
row.Editor= user.UserName;
}
不起作用。它不会改变数据内部的信息。
尝试使用原始 SQL 也无济于事。因为FromSql
仅适用于一张表并且ExecuteSqlCommand
不适用于 SELECT。
目前,EF Core
不支持DbContext
一个查询多个查询。您可以跟踪此行为Query: Throw if second context instance is used in single query #11101。
对于解决方法,您可以考虑 convert _userManager.Users
to _userManager.Users.ToList()
which 是一个列表对象。
var data = from o in _mainDbContext.Blogs
join u in _userManager.Users.ToList() on o.EditorID equals u.Id
select new BlogViewModel
{
Id = o.Id,
Title = o.Title,
Editor = u.UserName
};
var result = data2.ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句