如何处理在Entity Framework中返回不同输出的存储过程。 例如,在存储过程中,有if条件和else条件。如果条件返回整数,否则条件返回数据表格。如何在vs中使用entity framework来处理这个问题。 请给出建议。
如何处理在Entity Framework中返回不同输出的存储过程。 例如,在存储过程中,有if条件和else条件。如果条件返回整数,否则条件返回数据表格。如何在vs中使用entity framework来处理这个问题。 请给出建议。
DbContext.Database.SqlQuery<TElement>(string sql, params object[] parameters)
这个通用的方法以一个泛型参数作为你想要用于实例化的类型。它还需要将你想要执行的SQL表达式以及其参数作为 param'd 数组作为参数。
简化的 SP(无输入参数)用法如下:
var res = ctx.Database.SqlQuery<MyResultType1>("dbo.MyStoredProcedure");
foreach (var r in res)
{
System.Console.Out.WriteLine(
"col1:{0}; col2:{1}; col3={2}",
r.Col1,
r.Col2,
r.Col3);
}
因此,您可以执行以下操作:
IEnumerable res
if(...your logic...)
{
res = ctx.Database.SqlQuery<MyResultType1>(...your SP call...);
}
else
{
res = ctx.Database.SqlQuery<MyResultType2>(...your SP call...);
}
通过这种方式,您将按照您想要的方式填充SP输出结果集。
点击“从数据库更新模型”,选择你的存储过程,并确保它已经被添加到“函数导入”中(在模型浏览器中)
你可以在“编辑函数导入”窗口中更改返回值
然后只需执行db.myProcedure();
例如:只需拖放您的存储过程,然后...
db.procedure(element1, element2);
db.SubmitChanges();