模型返回空属性值MVC C#

时间:2019-01-14 18:39:41

标签: c# sql model-view-controller model

我有一个这样的模型:

public class ProdListModel
{

        public string Col1 { get; set; }
        public string Col2 { get; set; }

}

我的代码从数据库中拉出,应该遍历这些值并将它们添加到一些变量列表中:

var prodind = new List<string>();
var prodtyp = new List<string>();

var productlookup = db.Database.SqlQuery<ProdListModel>("select OPIS_Price_Import.ProductIndicator, OPIS_Price_Import.ProductType from OPIS_Price_Import INNER JOIN OPISCodes ON OPIS_Price_Import.ProductIndicator = OPISCodes.productgroup where OPIS_Price_Import.City = @cn and OPIS_Price_Import.ActualProduct = @ap", new SqlParameter("@cn", item.CityName), new SqlParameter("@ap", thing)).ToList();

foreach (var proditems in productlookup) {
    prodind.Add(proditems.Col1);
    prodtyp.Add(proditems.Col2);
}

在数据库上运行查询本身会返回一个值列表,因此我知道数据已经存在,只是出于某种原因而没有填充模型。我想念什么?

1 个答案:

答案 0 :(得分:0)

  

Microsoft说

     

Database.SqlQuery方法 创建一个原始SQL查询,该查询将返回   给定通用类型的元素。 类型可以是具有以下类型的任何类型   与从中返回的列名称匹配的属性   查询 ,也可以是简单的原始类型。

您必须进行一些小的更改,才能将模型属性与sql列同步或在查询中使用别名

public class ProdListModel
{
   public string ProductIndicator { get; set; }
   public string ProductType { get; set; }
}

OR

      //Sql alias , ProductIndicator AS Col1, ProductType AS Col2
      var productlookup = db.Database.SqlQuery<ProdListModel>("select OPIS_Price_Import.ProductIndicator AS Col1, OPIS_Price_Import.ProductType AS Col2 from OPIS_Price_Import INNER JOIN OPISCodes ON OPIS_Price_Import.ProductIndicator = OPISCodes.productgroup where OPIS_Price_Import.City = @cn and OPIS_Price_Import.ActualProduct = @ap", new SqlParameter("@cn", item.CityName), new SqlParameter("@ap", thing)).ToList();

Database.SqlQuery Method Microsoft Docs