【发布时间】:2018-09-13 18:04:52
【问题描述】:
当我使用 DbQuery 时,select 语句查询中的列是否应该与模型/实体完全匹配?
下面是例子:
IEnumerable<UserModel> test = _context.FewUserColumns.FromSql(@"select id,
last_name, from user where user_id = @userId",
param).ToListAsync();
下面是用户模型。
public class userModel
{
public int id {get;set;}
public string first_name { get; set; }
public string last_name { get; set; }
}
我没有在上面的 select 语句中获取 first_name。因此,我看到以下错误。
处理请求时发生未处理的异常。 InvalidOperationException:“FromSql”操作的结果中不存在所需的列“first_name”。
这是预期的吗?我们是否应该始终获取所有列以映射到模型中的所有属性?
【问题讨论】:
-
嗯,对我来说这听起来很合乎逻辑——这就是为什么它们被称为查询类型。或者更好地说,查询 result 类型。
-
谢谢伊万。在这种情况下,我最终创建了另一个与选择查询匹配的模型,或者是否可以同时引入“first_name”列详细信息并使用相同的模型,尽管我不需要“first_name”?
-
为什么不
SELECT NULL AS first_name? -
谢谢布里斯拉姆。那应该没问题。但是,我的示例只显示了一个缺失的列。在某些情况下,我的每个选择语句看起来都不同,我根本无法用空值标记缺失的列。即将发布的版本应该考虑您的建议,而不是我们将缺失列标记为 null ;)
标签: ef-core-2.1