gpt4 book ai didi

c# - 在 Entity Framework 中处理存储过程

转载 作者:太空狗 更新时间:2023-10-30 00:42:08 24 4
gpt4 key购买 nike

如何处理在 Entity Framwork 中返回不同输出的存储过程。比如在sp上,有if条件和else条件。如果条件返回整数,否则条件返回数据表。如何使用 vs 中的 Entity Framework 来处理这个问题请指教。

最佳答案

从 EF 4.1 开始,这是可能的。唯一的要求是知道 SP 在每种情况下将返回什么。

在我的例子中我使用

DbContext.Database.SqlQuery<TElement>(string sql, params object[] parameters)

此通用方法将您要用于具体化的类型作为通用参数。它还将您要执行的 SQL 表达式作为参数,并将其参数作为参数数组。

简化的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 输出结果集填充你的集合。

关于c# - 在 Entity Framework 中处理存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17164355/

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