【问题标题】:How do I use EF4 in SQLCLR (SQL Server 2012)?如何在 SQLCLR (SQL Server 2012) 中使用 EF4?
【发布时间】:2013-09-27 09:37:28
【问题描述】:

我有一个项目在客户端使用 EF4 与 SQL Server 数据库通信。在那个数据库上,有一堆 SP 对记录进行操作并返回记录子集。没有什么特别重要的,关于最密集的位是生成几个字节的随机数据并用它覆盖字节数组的一部分。出于安全原因,记录必须保留在服务器上,因为数据数组类似于私钥。

过去我曾在 SP 中使用 ADO 进行 DB 访问,但与 EF4 相比,这似乎已经过时且笨拙。现在我已经更新到 SQL Server 2012,它有 .NET4 可用于 SQLCLR 的东西,我想使用 EF4 做下一个 SP,并在未来转向使用它。

问题是,似乎还没有人这样做,我不确定这是否可能。

我知道我可以通过编写一个单独的服务器端应用程序并代表我与数据库对话来做到这一点,但这意味着客户端需要同时连接到数据库和辅助服务。更多的事情要开始工作,更多的事情会出错,而且不美观。

我创建了一个简单的程序集,它使用 EF4 提供对几个标准表的访问权限。没有添加额外的参考。将其导入 SQL Server 时,我收到找不到“System.Data.Entity”和“System.Runtime.Serialization”的错误。好的,我将它们复制到同一目录并再次导入。我收到了一些警告,说我处于未知领域,这对实验来说很好。但是后来我得到了一个缺少的程序集“smdiagnostics”。而且我在驱动器上找不到名称中包含“smdiagnostics”的任何文件,对该术语的项目进行全文搜索没有任何结果,而且我在其他地方也找不到太多可以帮助我找到它的地方被发现。

那么有谁知道我怎样才能满足或取消对 smdiagnostics 的要求?

【问题讨论】:

    标签: sql-server entity-framework-4 sqlclr


    【解决方案1】:

    啊。有点“doh”。将单个程序集复制到与我自己的 DLL 相同的目录不是可行的方法,只是在查看有关即使在同一目录中也找不到所引用的程序集的错误消息时的膝跳反应。

    假设使用 32 位服务器,已选择您自己的数据库并已设置可信任,这将注册添加 EF4 项目所需的所有内容;

     CREATE ASSEMBLY [System.Data.Entity] 
     from 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.Entity.dll'
     with permission_set = UNSAFE;
    

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多