我一直坚持通过asp.net mvc执行存储过程。我正在使用Entity Framework第5版,数据库第一种方法。我想执行一个存储的参数,其参数通过前端网页传递。
存储过程返回包含所有列的表。该表是StaggingInternal,因此sp返回:ù
select * from stagginginternal.
使用EF,在我的asp.net mvc应用程序中,我使用edmx设计器来获取sp,然后在模型浏览器中我选择sp作为实体的返回类型。该实体的名称是徘徊在内部。
但每次尝试执行sp时都会出现异常。例外是:
发生了'System.ArgumentException'类型的异常 EntityFramework.SqlServer.dll但未在用户代码中处理
附加信息:对象类型不存在映射 System.Data.Entity.Infrastructure.DbQuery
1[[<>f__AnonymousTyped
1 [[System.String, mscorlib,版本= 4.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089]],NewWeb,版本= 1.0.0.0, Culture = neutral,PublicKeyToken = null]]到已知的托管提供商 本地类型。
代码段:
var servername = from p in db2.AppClientServerDatabaseRelationships
join q in db2.AppServers on p.ServerID equals q.ServerID
where p.clientID == clientid
select new { q.ServerName };
var databasename = from p in db2.AppClientServerDatabaseRelationships
join q in db2.AppDatabaseNames on p.DatabaseID equals q.DatabaseID
where p.clientID == clientid
select new { q.DatabaseName };
var datefrom = "01/01/2017";
var dateto = "01/01/2017";
var serverparameter = new SqlParameter("@serverName", servername);
var dbparameter = new SqlParameter("@awDatabase", databasename);
var dtTo = new SqlParameter("@dtTo", dateto);
var dtFrom = new SqlParameter("@dtFrom", datefrom);
List<Object> Parameters = new List<Object>();
Parameters.Add(serverparameter);
Parameters.Add(dbparameter);
Parameters.Add(dtTo);
Parameters.Add(dtFrom);
var result = db2.Database.SqlQuery<StaggingInternal>("exec App_aw_Internal @serverName,@awDatabase,@dtTo,@dtFrom",
Parameters.ToArray()).ToList<StaggingInternal>();
我不确定我哪里出错了。有什么想法吗?
此外,如果有什么不清楚,请告诉我。
谢谢!