我第一次使用Entity Framework。这是一个简单的应用程序,可以查找零件编号并将其显示在网格中。我的应用程序在本地运行正常,但是当我对生产SQL Server数据库执行时,具有Entity Framework的存储过程调用的页面失败。
但是,它将对表运行实体框架并返回数据,但不返回存储过程。我这样做是为了填充下拉列表,它工作正常。当我调用存储过程返回搜索结果时,它会失败。
这可能是我的用户ID无权执行存储过程的生产SQL Server上的设置吗?
以下是日志中的错误消息:
日期/时间:12/7/2013 12:23:41 PM
标题:错误
消息:执行命令定义时发生错误。有关详细信息,请参阅内部异常 堆栈跟踪:
在System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior behavior)
at System:Data.Objects.ObjectContext.CreateFunctionObjectResult [TElement](EntityCommand entityCommand,ReadOnlyMetadataCollection1 entitySets, EdmType[] edmTypes, MergeOption mergeOption)
1 diaFromParm,Nullable
at System.Data.Objects.ObjectContext.ExecuteFunction[TElement](String functionName, MergeOption mergeOption, ObjectParameter[] parameters)
at System.Data.Objects.ObjectContext.ExecuteFunction[TElement](String functionName, ObjectParameter[] parameters)
at FanInfo.FandbEntities1.uspFANSearch(String idParm, Nullable1 diaToParm, Nullable
1 hubFromParm,Nullable`1 hubToParm)在C:\ Users \ Public \ Documents \ Projects \ Fan Info \ Fan Info \ Model1.Designer.vb:第201行 at FanInfo.frmMain.LoadSearchResults()in C:\ Users \ Public \ Documents \ Projects \ Fan Info \ Fan Info \ Main.vb:line 208
答案 0 :(得分:1)
因为它在本地工作但不在生产中。错误将与这些之间的差异有关。通常这是:
在您的情况下访问表Works。因此问题是权利问题。
您需要在存储过程中执行“执行”。
请参阅:GRANT EXECUTE to all stored procedures
修改强>
根据您的评论,有两种可能性:
修改2
根据您的上一条评论,您的开发环境和生产环境中的存储过程的结构存在差异。