【问题标题】:EF Core 2.1 - Query types support with modelsEF Core 2.1 - 模型支持查询类型
【发布时间】: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


【解决方案1】:

我曾在 msdn 上发布过类似的查询,并收到了来自Julie Lerman 的回复:

是的,不幸的是,这是一个约束……EF Core 期望所有这些 属性可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多