c# - 添加联接时出现实体框架核心错误
问题描述
这是怎么回事:
var query = _context.Routing_Tool
.Where(rt => rt.Id == id)
.FirstOrDefault();
return query;
但这并不
var query = _context.Routing_Tool
.Join(_context.Routing_Tool_Prioritization_Matrix,
rt => rt.Id,
rp => rp.RoutingToolId,
(rt, rp) => new
{
Id = rt.Id,
Title = rt.Title,
LoeName = rp.LoeName,
}
)
.Where(rt => rt.Id == id)
.FirstOrDefault();
return query;
相反,在尝试加入表后,我得到并隐式转换类型错误。帮助表示赞赏
全新的方法 - 包括我正在研究的旧方法以供参考。
public Routing_Tool GetItemsInitById(int id)
{
//var query = (from rt in _context.Set<Routing_Tool>()
// join rp in _context.Set<Routing_Tool_Prioritization_Matrix>()
// on rt.Id equals rp.RoutingToolId into grouping
// from rp in grouping.DefaultIfEmpty()
// select new Routing_Tool {
// Id = rt.Id,
// Title = rt.Title,
// Classification = rt.Classification,
// MainPOC = rt.MainPOC,
// RequestingDirectorate = rt.RequestingDirectorate,
// IsEnduring = rt.IsEnduring,
// IsApproved = rt.IsApproved,
// IsAssociated = rt.IsAssociated,
// DirectingRequirement = rt.DirectingRequirement,
// RequirementDescription = rt.RequirementDescription,
// RequestType = rt.RequestType,
// // LoeName = rp.LoeName,
// // LoePriority = rp.LoePriority,
// }
// ).FirstOrDefault();
// return query;
var query = _context.Routing_Tool
.Join(_context.Routing_Tool_Prioritization_Matrix,
rt => rt.Id,
rp => rp.RoutingToolId,
(rt, rp) => new
{
Id = rt.Id,
Title = rt.Title,
}
)
.Where(rt => rt.Id == id)
.FirstOrDefault();
return query;
//return _context.Routing_Tool.FirstOrDefault(p => p.Id == id);
}
解决方案
在第一种情况下,您的查询变量是 IQueryable<Routing_Tool> 类型,这是正确的,您返回它并且一切都很好。在第二种情况下,您返回匿名类型,这里有两个选项:
- 为该类型创建一个模型(具有 Id、Title 和 LoeName 属性)并返回“IQueryable< MyType >”
- 从表达式 ((rt, rp) => rt) 中返回“Routing_Tool”,没有意义
推荐阅读
- powershell - PowerShell 函数参数都在第一个参数中传递
- html - 不应该出现的下拉菜单出现
- vim - 如何使用vim更改文档中的多个重复单词
- javascript - 循环遍历 Node.js 中的嵌套对象
- c# - Elmah.io ,访问 http://localhost:port/elmah 时看不到日志
- python - if 和 else 语句 python
- javascript - 拼接时如何迭代数组
- xquery - 在 SOAPUI 中使用 XQuery 返回数组
- python-3.x - Python和MATLAB在从日期时间计算POSIX方面的分歧
- flutter - Row 内的“TextField”导致溢出抖动