繁体   English   中英

更新实体框架后,我的CLR StoredProcedure停止工作,直到我再次对其进行编译

[英]After updating Entity Framework my CLR StoredProcedure stopped working until I compiled it again

我在sql server clr之前问这个问题-如何在Visual Studio的clr sql存储过程中调用wcf服务并创建stored procedure以调用wcf service但是当我在服务器存储过程中将实体框架4.5更新为4.5.1时,围绕System.ServiceModel程序集的错误
我不得不回答我的旧问题,并再次发布存储过程以使其正常工作。

但是我感到困惑,因为我的sql server是2008 r2,并且它可以与实体框架3.5一起使用,为什么我必须重新发布存储过程和所有步骤,有人可以帮助我吗?

我认为您解决问题的方法不正确,
对于SQL Server呼叫WCF服务,您必须使用System.Web.Service而不是System.ServiceModule
如果您使用此程序集,则不强制添加

  • System.Messaging
  • System.IdentityModel
  • System.IdentityModel.Selectors
  • Microsoft.Transactions.Bridge
  • System.Runtime.Serialization
  • System.ServiceModel

这种方法非常简单,只需添加服务,例如旧的Web服务
有关更多信息,请使用CLR中的调用WCF。

您在System.ServiceModel上收到错误的原因是:

  • 您将System.ServiceModel.dll加载到SQL Server中,因为它不是受支持的.Net Framework库

  • 您更新了主System.ServiceModel.dll ,可能是升级Entity Framework的一部分

  • 加载到SQL Server中的DLL版本不再与GAC中的DLL版本匹配

  • 加载到SQL Server中的DLL版本必须与GAC中的DLL版本匹配:

    如果您在SQL Server数据库中注册了不受支持的库,则您的SQL Server应用程序可能会停止运行...因为GAC中的服务或升级库不会更新SQL Server中的程序集。 如果程序集同时存在于SQL Server数据库和GAC中,则该程序集的两个副本必须完全匹配。 如果它们不匹配,则SQL Server CLR集成使用该程序集时将发生错误。

    SQL Server 2008 / SQL Server 2008R2中的重大更改


我想我只是找到了您遇到的确切错误。 查看此页面:

当您执行CLR例程或在SQL Server中使用程序集时出现错误消息:“主机存储区中的程序集与GAC中的程序集具有不同的签名。(HRESULT的异常:0x80131050)

哪些状态(在“方案1”中):

您创建引用Microsoft .NET Framework程序集的公共语言运行库(CLR)例程。 知识库文章922672中没有记录.NET Framework程序集。然后,您安装.NET Framework 3.5或基于.NET Framework 2.0的修补程序。

这种情况支持我上面提到的内容。

我前段时间有一个相关的错误。 引发的错误是:

无法从程序集'System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.ServiceModel.Activation.HttpModule'

在安装.NET Framework 4之后安装或更新IIS,或者在安装.NET Framework 4之后是否安装了模块Http Activation v3.0时,可能会发生此错误。 无论如何,您提到的问题是EF的更新。

也许这会有所帮助:

  • 运行工具ASP.NET IIS注册工具(Aspnet_regiis.exe)
  • 运行命令以注册新版本:
    C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319>aspnet_regiis.exe –iru

您可以在此处获取更多信息:

或者,也许您想更新GAC中的库。 该框架的库已缓存在GAC中 ,请检查本文如何:将程序集安装到全局程序集缓存中,以及本主题在GAC中更新DLL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM