从 SQL 查询添加额外列时,Class 出现绑定错误

Binding error from Class when adding extra column from SQL query

我正在使用 Entity Framework 从 SQL 中检索数据。

我有两个使用相同 class 绑定的 razorpages

  1. Razorpage 1. 使用 returns 来自 table
  2. 的所有可用列的查询
  3. Razorpage 2. 使用查询将新列添加到不在 table
  4. 中的结果中

看起来像这样

result = await _context.tblTime.FromSql("...").ToListAsync();

所以在 2:nd 中,查询正在向结果中添加一个不在 table 中的列。

如果我将列作为 属性 添加到我的 Class 中,我会收到错误消息:'FromSql' 的结果中不存在所需的列 'Rsp'从我的第一个 razor 页面操作,而不是从 2:nd razorpage.

因此第一个 razorpage 生成错误,因为列 "Rsp" 在 class 中但不在 table 中且不在结果集中

我还注意到我需要在 class 中将 Rsp 声明为虚拟才能获得正确的值

public virtual string Rsp { get; set; } 

我怎样才能让这两个 razorpages 都起作用?

使用 Visuas Studio 2017 v15.5.2 和 Asp.NET Core v2

为了回答您的评论,我将举一个从原始 sql 查询填充视图模式的示例。

假设您有这样的视图模型:

 public class TimeViewModel {
        public string Rsp { get; set; }
        public int Minutes { get; set; }
        public int Seconds { get; set; }
    }

然后您可以 select 从您的原始查询到您的视图模型的新列表:

result = await _context.tblTime.FromSql("...").ToListAsync();
List<TimeViewModel> viewModel = result .Select(a => new TimeViewModel()
                                              {
                                                   Minutes = a.Minutes,
                                                   Seconds = a.Seconds
                                               }).ToList();

您可以使用 Rsp 字段添加额外的 timeViewModel 行 no 没有问题。

然后 return 你的视图模型到视图。