0
我有一个存储过程,它有2个输入参数并返回多个结果集合。为什么调用带参数的SP在实体框架中返回多个结果集会抛出错误
ALTER PROCEDURE [dbo].[sp_GetList]
@eid int,
@sid int,
AS
SELECT ID, NAME FROM EMPLOYEE WHERE [email protected];
SELECT ID, NAME FROM STUDENTS WHERE [email protected]
在实体框架中,我打电话给这个存储过程如下。
我正在使用本教程从msdn。
https://msdn.microsoft.com/en-us/library/jj691402(v=vs.113).aspx
using (var db = new APIContext()) {
db.Database.Initialize(force: false);
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "[dbo].[sp_GetList]";
DbParameter eid = cmd.CreateParameter();
eid.ParameterName = "@eid";
eid.DbType = System.Data.DbType.Int32;
eid.Direction = ParameterDirection.Input;
eid.Value = resourceID;
DbParameter sid = cmd.CreateParameter();
sid.ParameterName = "@sid";
sid.DbType = System.Data.DbType.Date;
sid.Direction = ParameterDirection.Input;
sid.Value = sid;
cmd.Parameters.Add(sid);
try
{
db.Database.Connection.Open();
var reader = cmd.ExecuteReader();
EmpList = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Shared.Model.EmpList>(reader).ToList();
MList.EmpList = EmpList;
reader.NextResult();
SList = ((IObjectContextAdapter)db)
.ObjectContext
.Translate<Shared.Model.SList>(reader).ToList();
MList.SList = SList;
}
finally
{
db.Database.Connection.Close();
}
当我运行这段代码,我得到错误:
Additional information: Procedure or function 'sp_GetList' expects parameter '@eid', which was not supplied.
我明白这是很基本的错误,当谈到ado.net,但这种使用实体是不同的框架。
任何帮助是apreciated。
@sid被声明为“日期”,并作为一个int后来在DB –