我尝试创建一个通用方法,通过一个存储过程从SQL Server获取数据,但它不会返回任何数据:
public static IEnumerable<T> Select<T>(string SQL)
{
string spName = "exec spGetData @SQL";
var parametros = new object[]{
new SqlParameter("@SQL", SQL)
};
IEnumerable<T> result;
using (DBContext db = new DBContext())
{
result = from a in db.ObjectContext.ExecuteStoreQuery<T>(spName, parametros).ToList() select a;
}
return result;
}
有人可以帮助我吗?
答案 0 :(得分:2)
EF处理存储过程,并从存储的proc结果选择的函数映射创建实体结果集,以便从EF上下文中消耗。
步骤
Client client = ClientBuilder.newClient().register(MyFormProvider.class);
中存储的过程,可以通过右键单击EF设计图面并选择Model Browser
来显示。Model Browser
中寻找存储过程的Model Browser
- &gt; Model Store
文件夹。通过查看Stored Procedures / Functions
- &gt;验证映射是否良好。 Model
并且可以在Function Imports
文件夹中找到结果实体。从那里你可以从EF上下文中调用你的存储过程,它会将结果集的列表返回给代码。
我在博客文章中给出了更全面的解释,并提供了有关复杂实体失败的一些问题的提示和解决方法:Entity Framework Stored Procedure Instructions