【发布时间】:2013-09-19 09:49:07
【问题描述】:
我做了一个像这样的动态存储过程
CREATE PROCEDURE [dbo].[MyProcedure]
@pSelect nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL nvarchar(max)
SET @SQL = 'select ' + @pSelect + ' from tabel1';
EXEC (@SQL)
END
在更新我的实体数据模型时,在 context.cs 中,上述存储过程的形式为
virtual int MyProcedure(string pSelect)
{
var pSelectParameter = pSelect != null ?
new ObjectParameter("pSelect", pSelect) :
new ObjectParameter("pSelect", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MyProcedure", pSelectParameter);
}
关于从 c# 代码调用存储过程
var result = myDataModel.MyProcedure("Select * From table1").tolist();
上面的代码显示错误,因为 MyProcedure 正在返回一个整数返回类型
那么如何根据传递给它的 tje select 查询设置存储过程的返回类型
如何修改我的存储过程,使其返回类型是任何特定的表类型
【问题讨论】:
-
Entity Framework 支持原生查询:Entity Framework Raw SQL Queries - 这就是你想要做的吗?
-
另外,您的代码结果为
"select Select * From table1 from tabel1",但我明白了。
标签: c# sql-server stored-procedures ado.net-entity-data-model