【问题标题】:Ignore extra property from entity while getting data from DB using EF Core使用 EF Core 从数据库获取数据时忽略来自实体的额外属性
【发布时间】:2021-08-18 02:19:08
【问题描述】:

我正在使用 EF Core。我想使用存储过程和 EF Core 从数据库中提取数据。对于那些未从 DB 返回的属性,我收到错误消息。我该如何解决这个问题?

实体:

public class CustomOverview
{
    public int A{ get; set; }
    public int? B{ get; set; }
    public int? C{ get; set; }
    public int? D{ get; set; }
}

存储库代码

public async Task<CustomOverview> GetMyData()
{
    return  _dbContext.CustomOverviews.FromSqlInterpolated($"exec spr_myStoredProcedure).AsEnumerable().FirstOrDefault();
}

我的存储过程返回 A 列、B 列的数据。

当我运行代码时,我得到了这个异常:

InvalidOperationException:“FromSql”操作的结果中不存在所需的列“C”。

我该如何解决?有很多解决方案,他们建议在属性之前删除属性或使用 [NotMapped] 属性。但我的要求是我需要这些属性用于不同的存储过程。所以我无法删除它们。

【问题讨论】:

    标签: sql-server asp.net-core entity-framework-core asp.net-core-webapi


    【解决方案1】:
    1. 创建一个与存储过程返回结果匹配的新类。

    1. 使用传统的数据阅读器将存储过程的结果读入现有的类中。

    1. 将列 C 和 D 添加到存储过程结果中,如果合适,使用 Null 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-22
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      相关资源
      最近更新 更多