gpt4 book ai didi

c# - Entity Framework 从存储过程中获取非实体对象

转载 作者:行者123 更新时间:2023-11-30 20:46:03 26 4
gpt4 key购买 nike

我正在使用 Entity Framework 6。

我想运行一个返回非实体对象的存储过程(每行 3 列)

using(var dbContext = new DBContextEntity())
{
var queryProducts = dbContext.Database.SqlQuery<DataTable>("dbo.GetProductByDesc @q", query);
}

如何获取数据作为 DataSet 或我可以迭代的匿名对象?

最佳答案

据我所知,EntityFramework 不提供匿名对象具体化。原因是它可能会为每种类型生成 IL 代码并将其缓存(或者只是进行普通的 PropertyInfo 缓存)。

解决方案是创建一个简单的类,其属性需要与存储过程结果集的名称相匹配,并将此类用作 SqlQuery 的通用参数。

编辑:

SqlQuery 实现 IEnumerable,当您对其进行迭代时,它会在当前线程中自动执行。例如,要迭代结果,您可以:

foreach(var product in queryProducts)
{
// do something with each product here
}

您还可以将产品类实例列表传递给需要它的函数:

ShowProducts(queryProducts.ToList());

您还可以让查询在后台运行,并在完成后返回产品列表,有关异步获取的更多信息,请参见here: http://www.codeguru.com/csharp/.net/net_framework/performing-asynchronous-operations-using-entity-framework.htm

关于c# - Entity Framework 从存储过程中获取非实体对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com