1

我正在使用实体框架从 SQL 中检索数据。

我有两个 razorpages 使用相同的类进行绑定

  1. Razorpage 1. 使用从表中返回所有可用列的查询
  2. Razorpage 2. 使用向不在表中的结果添加新列的查询

看起来像这样

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

因此,在 2:nd 中,查询正在将一列添加到不在表中的结果中。

如果我将该列作为属性添加到我的类中,我会收到错误消息:我的第一个剃须刀页面的“FromSql”操作结果中不存在所需的列“Rsp”,但来自第 2:nd 剃须刀页面的操作结果中不存在所需的列“Rsp”。

因此,第一个 razorpage 生成错误,因为“Rsp”列在类中,但不在表中,也不在结果集中

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

public virtual string Rsp { get; set; } 

我怎样才能使这对我的两个剃须刀页面都有效?

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

4

1 回答 1

1

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

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

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

然后,您可以从原始查询中选择视图模型的新列表:

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

您可以毫无问题地使用 Rsp 字段添加额外的 timeViewModel 行。

然后只需将您的视图模型返回到视图。

于 2018-01-05T13:19:40.363 回答