来自EF7 Database.SqlQuery

时间:2016-10-12 11:00:56

标签: c# asp.net-mvc entity-framework

我想对我们拥有的新API进行一些测试。所以我想从db加载大约115个VIN并将它们插入到API调用中。我知道使用模型是最佳实践,但仅仅是为了测试我宁愿不必每次只想测试这样的东西时都要构建模型然后必须删除模型并在以后从上下文中删除它。

我只想获得一个VIN字符串列表,我可以通过某种方式循环。

这是我的代码:

dynamic ret = new ExpandoObject();

ret.vehicles = _context.Database.SqlQuery<string>("SELECT MIN(VIN) FROM bl_DealerInventory WHERE DealerID = "+ dealer.ClientDealerID +" GROUP BY Year, Make, Model, ModelNumber");

for (var i = 0; i < ret.vehicles.Count; i++)
{
    System.Diagnostics.Debug.WriteLine("Ran vin "+ ret.vehicles[i]);
}

SQL有效,但我似乎无法找到将其更改为列表的方法,因此我可以遍历它。我怎么能循环呢?或者我必须将其作为其他内容或什么来投射?

这是我正在使用的实体框架:

<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net461" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net461" />

如果还有其他需要的信息,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

我使用foreach而不是for循环使循环工作。

Pawel Hemperek所说的原因:

因为SqlQuery返回实现IEnumerable的DbRawSqlQuery并在枚举时执行查询。