我有一个这样的模型:
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);
}
在数据库上运行查询本身会返回一个值列表,因此我知道数据已经存在,只是出于某种原因而没有填充模型。我想念什么?
答案 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();