Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架可以';t运行存储过程_C#_Sql Server_Vb.net_Sql Server 2008_Entity Framework - Fatal编程技术网

C# 实体框架可以';t运行存储过程

C# 实体框架可以';t运行存储过程,c#,sql-server,vb.net,sql-server-2008,entity-framework,C#,Sql Server,Vb.net,Sql Server 2008,Entity Framework,我第一次使用实体框架。这是一个简单的应用程序,可以查找零件号并将其显示在网格中。我的应用程序在本地运行良好,但当我对生产SQL Server数据库执行时,使用Entity Framework进行存储过程调用的页面将失败 但是,它将运行对表的实体框架调用并返回数据,而不是存储过程。我这样做是为了填充一个下拉列表,效果很好。当我调用存储过程返回搜索结果时,它失败了 这可能是生产SQL Server上的一个设置,我的用户ID无权执行存储过程吗 以下是日志中的错误消息: 日期/时间:2013年7月12日

我第一次使用实体框架。这是一个简单的应用程序,可以查找零件号并将其显示在网格中。我的应用程序在本地运行良好,但当我对生产SQL Server数据库执行时,使用Entity Framework进行存储过程调用的页面将失败

但是,它将运行对表的实体框架调用并返回数据,而不是存储过程。我这样做是为了填充一个下拉列表,效果很好。当我调用存储过程返回搜索结果时,它失败了

这可能是生产SQL Server上的一个设置,我的用户ID无权执行存储过程吗

以下是日志中的错误消息:

日期/时间:2013年7月12日下午12:23:41

标题:错误
消息:执行命令定义时出错。有关详细信息,请参见内部异常。
StackTrace:
在System.Data.EntityClient.EntityCommandDefinition.ExecuteStorommands(EntityCommand,EntityCommand,CommandBehavior)中执行命令
在System.Data.Objects.ObjectContext.CreateFunctionObjectResult[TElement](EntityCommand和EntityCommand,ReadOnlyMetadataCollection
1 entitySets,EdmType[]edmTypes,MergeOption)
位于System.Data.Objects.ObjectContext.ExecuteFunction[TElement](字符串函数名,合并选项,合并选项,对象参数[]参数)
位于System.Data.Objects.ObjectContext.ExecuteFunction[TElement](字符串函数名,ObjectParameter[]参数)
在C:\Users\Public\Documents\Projects\Fan Info\Fan Info\Model1.Designer.vb中的FanInfo.fandEntities1.uspFANSearch(字符串idParm,可空
1 diaFromParm,可空1 diaFromParm,可空1 diaToParm,可空1 hubbromparm,可空` 1 hubToParm)` 在C:\Users\Public\Documents\Projects\Fan Info\Fan Info\Main.vb中的FanInfo.frmMain.LoadSearchResults()处:第208行


因为它在本地工作,但不在生产中。错误将与这些之间的差异有关。通常这是:

  • 权利
  • 不正确的连接字符串
  • 防火墙问题
在您的情况下,访问表是有效的。因此,这是一个权利问题

您需要在存储过程上正确地“执行”

见:

编辑

根据您的评论,有两种可能性:

  • 与SQL Server的连接未使用您认为它正在使用的安全id。检查连接字符串。代码是作为Windows应用程序运行还是在IIS下运行
  • 另一件事是,prod数据库中的存储过程与dev数据库中的存储过程处于不同的模式
编辑2


根据您上次的评论,在开发环境和生产环境中,存储过程的结构有所不同。

您是否看到内部异常以了解详细信息?它说“请参见内部异常以了解详细信息。”这样做可以省去您提问的麻烦。我使用了对存储过程的用户ID授予Execute。我还尝试重新启动sql server。它仍然没有解决问题。当我转到SQLServerStudio并使用ID登录时,存储过程工作正常。当我通过实体框架执行时,它失败了。我检查了本地SQL Server ID的设置,并且登录/安全/角色与本地和产品匹配。是否有其他建议。SQL Server中是否有我缺少的其他设置。直接访问表仍然可以正常工作。这是实体框架的问题。我创建了一个调用存储过程的临时方法。它返回我的应用程序中的所有内容。因此,我可以在没有实体框架的情况下调用存储过程,但当我在实体框架内调用存储过程时,它会在生产中失败。在我用来创建模型的开发机器上运行良好。我在客户端机器上重建了我的应用程序,并更新了我的复杂功能。信息技术worked@user2011126如果这个答案解决了你的问题,请接受这个答案,这将是帮助未来的游客充分