微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 SqlQuery 映射带有 2 个表的“全选”查询

如何解决如何使用 SqlQuery 映射带有 2 个表的“全选”查询

我正在尝试将两个连接表中的所有字段检索到任何类型的 c# 对象。

所以我正在尝试运行此代码

var query = @$"EXEC('select *
   from persons p join students s on p.id=s.id 
   where p.id = 21')";

var result = _context.Database.sqlQuery<?>(query).ToList();  

但我不明白应该用什么来代替问号。

我已经尝试过 List<object>Dictionary<string,string>,但由于我无法准确了解它是如何映射的,我不明白它可以映射到什么。

一个有点类似的问题 here 但它的解决方案只解决了两列,而且它显然不支持返回空值。

解决方法

您可以尝试在 SQL 级别创建存储过程或函数。 然后,只需选择然后生成的表/结果。 所以,你已经知道它是什么类了。

,

我经常像这样使用动态类型:

  var lst =   _context.Database.SqlQuery<dynamic>(query).ToList();  
  foreach (var item in lst)
  {
     var myVar = item.myfieldName;
  }

最好为查询中的每个字段命名,而不是使用 select *。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。