使用参数调用存储过程

kat*_*tit 8 c# entity-framework

我有一个存储过程返回一个值,而不是一个数据集,我有问题让它与EF4一起工作.

我见过这个:http://dotnet.dzone.com/news/how-retrieve-stored-procedure

这是我做的:我在模型中添加了一个过程,并导入了一个函数.

我遇到的第一个问题是我的程序中的参数被命名为@_Parameter_in.这使得EF将它们带入,p_Parameter_in因为它不能用下划线作为第一个角色.然后,当我调用存储过程时,我可以在SQL Profiler调用中看到它查找@p_Parameter_in,当然还有一个问题.

现在我重命名参数并查看SQL Trace - 一切看起来都很棒.问题是我无法获得价值.以下是我的代码的外观:

System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
Run Code Online (Sandbox Code Playgroud)

在调用之后newKey.Value,它总是0或我设置的任何值.它没有带来价值.我怀疑我的问题是我如何导入该功能.我使用Scalars和数据类型Int32.出于某种原因,我禁用了"创建新的复杂类型".有谁有这个问题?

Dav*_*ave 7

我在这里猜测,因为我看不到你正在调用的存储过程.我想你想要检索存储过程返回的标量值,而不是存储过程中定义的输出参数的值.

我相信您想在EDM中定义一个新函数并将其指向存储过程.快速谷歌有这个潜在的解决方案:http://www.devtoolshed.com/using-stored-procedures-entity-framework-scalar-return-values

HTH