将程序集添加到 SQL Server 2012 时出错

本文关键字:2012 出错 Server SQL 程序集 添加 | 更新日期: 2023-09-27 18:34:49

如果有人能就我的问题提出建议,我将不胜感激。

我有一个 EF 版本 4.5 的类库项目。

项目的App.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </configSections>
  <connectionStrings>
    <add name="Entities" connectionString="..." providerName="System.Data.EntityClient"/>
    <add name="REPORTSEntities" connectionString="..." providerName="System.Data.EntityClient"/>
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
  </entityFramework>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>

当我尝试将dll添加到 SQL Server 2012 时,出现错误:

在 SQL 目录中找不到程序集"实体框架,版本=5.0.0.0,区域性=中性,公钥令牌=b77a5c561934e089"。(错误:6503(

我做错了什么?

多谢。

将程序集添加到 SQL Server 2012 时出错

SQL Server的CLR主机受到设计的限制。下面是受支持的 .NET Framework 库的列表(可在此处找到(。请注意,这是一个相当短的列表,实体框架不在其中。

  • 定制编组
  • Microsoft.视觉基础
  • Microsoft.视觉C
  • 姆科利布
  • 系统
  • 系统.配置
  • 系统.数据
  • System.Data.OracleClient
  • System.Data.SqlXml
  • 系统部署
  • 系统.安全
  • 系统.事务
  • 系统.网络.服务
  • System.Xml
  • 系统核心.dll
  • System.Xml.Linq.dll

我无法想象为什么当您在数据库本身内部运行时需要加载数据访问框架。公平地说,如果您将它们全部加载为UNSAFE则可以执行此操作,假设它们都是纯MSIL,并且没有一个是混合的。但是,加载_un_supported.NET Framework 库的几个风险之一是,如果它们随时间而更改(通过 Windows 更新或手动更新(,则在 SQL Server 中运行的代码可能会停止工作。如果它只是一个更新版本,那么您需要手动更新您必须加载到 SQL Server 中的相关 .NET Framework DLL,以便首先使其正常工作。但是,如果其中一个 DLL 更改为在更新中混合,则您将无法将更新的版本加载到 SQL Server 中,并且必须更改代码以不再需要该 DLL。

但是,如果确实加载了它,然后在引用 EF DLL 的完整路径的同时执行CREATE ASSEMBLY,它应该会自动拉入所有依赖项。

话虽如此,您确定需要将任何DLL加载到SQL Server中吗?没有理由为 SQLCLR 中运行的任何内容提供app.config文件。