【问题标题】:Is it possible to use a my SQL inner join query inside my ASP.NET WEB API app directly, or is it better to translate, if so how can it be done?是否可以直接在我的 ASP.NET WEB API 应用程序中使用我的 SQL 内连接查询,或者翻译更好,如果可以,怎么做?
【发布时间】:2021-04-09 06:04:28
【问题描述】:

我正在处理我的第一个(有点)大型个人项目,但我陷入了困境。我有 4 个表,其中 3 个具有链接到 tbl_model_details 的外键。下面列出了所有表格。

tbl_model_details 
tbl_model_type
tbl_model_name
tbl_model_scale

理想情况下,我想通过我的控制器使用 HTTP Get 显示数据。我可以让 Postman 使用 _context.tbl_model_details.ToList(); 从我的控制器返回数据

目前 Postman 正在显示其他表的 id,但希望他们显示这些表中其他列的数据而不是 id。

在 SQL 中,我能够构建这个查询,它显示我想要从其他表中获取的信息,是否有一个等价物可以在我的控制器中运行?或者有什么方法可以使用我已经提出的这个查询?


SELECT model_scale, model_name,  info, picture, model_type, part_number, amount_owned, modified, limited_addition, date_purchase, price_paid, upc
from tbl_model_details
join tbl_model_type
on tbl_model_details.type_id = tbl_model_type.type_id
join tbl_model_name
on tbl_model_details.name_id = tbl_model_name.name_id
join tbl_model_scale
on tbl_model_details.scale_id = tbl_model_scale.scale_id

你们的任何帮助都会很棒。 谢谢

【问题讨论】:

  • 使用LINQ编写查询

标签: sql asp.net api


【解决方案1】:

您可以使用实体框架 LINQ 包含。这将允许您在同一查询中包含子模型:

_context.tbl_model_details
     .Include(details => details.tbl_model_type)
     .Include(details => details.tbl_model_name)
.ToList(); 

在不知道您的关系、DBSet 和模型设置的情况下,我可以说该语句看起来与我提到的完全一样,但这可能会帮助您走上正轨。

这将允许您稍后从子模型中检索数据:

@Model.tbl_model_scale.model_scale; 

【讨论】:

  • 这真的很有帮助。虽然我收到一个异常抛出:“System.InvalidOperationException”发生在 Microsoft.EntityFrameworkCore.dll 中,但未在用户代码中处理:“包含内部使用的 Lambda 表达式无效。”它不喜欢 Lambda 表达式?关于如何解决的任何想法?
  • 我需要查看您的模型类。但是 lambda 需要返回您的子模型。例如,如果你有一个包含一群学生的 Class 模型,你会这样做:_context.Classes.Include(class=> class.Students)
  • 我会试着在这里展示一些。这里是 TblModelType 模型``` public int TypeId { get;放; } 公共字符串模型类型 { 获取;放; } 公共虚拟 ICollection TblModelDetails { get;放; } ``` 这里是我的 DBSet ``` public virtual DbSet TblModelType { get;放; } ```
猜你喜欢
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多