Sql server 如何在SQLCLR(SQL Server 2012)中使用EF4?

Sql server 如何在SQLCLR(SQL Server 2012)中使用EF4?,sql-server,entity-framework-4,sqlclr,Sql Server,Entity Framework 4,Sqlclr,我有一个项目,它在客户端使用EF4与SQL Server db对话。在该数据库上有一组SP对记录执行操作并返回记录子集。没有什么特别重要的,最密集的位是生成几个字节的随机数据并用它覆盖字节数组的一部分。出于安全原因,记录必须保留在服务器上,因为数据数组类似于私钥 在过去,我在SPs中使用ADO进行DB访问,但与EF4相比,这似乎非常过时和笨拙。现在,我已经更新到SQL Server 2012,它有.NET4可用于SQLCLR的东西,我想使用EF4做下一个SP,并在将来使用它 问题是,似乎还没有人

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

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

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

我知道我可以通过编写一个单独的服务器端应用程序并代表我与数据库进行对话来做到这一点,但这意味着客户端需要连接到数据库和助手服务。越来越多的事情需要处理,越来越多的事情出错,越来越不美观

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

那么,有人知道我如何满足或取消smdiagnostics的要求吗?

啊。有点“doh”。将单个程序集复制到与我自己的DLL相同的目录中并不是一个好办法,只是看到一条错误消息时的下意识反应,即即使在同一目录中查找后,也找不到引用的程序集

假设使用32位服务器,选择了您自己的db,并且已经设置了Trusty,这将注册添加EF4项目所需的所有内容

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