3

我期待将所有逻辑(作为操作 Entity Framework 4 对象实现)移动到服务器端。它看起来很简单(由于应用程序结构)和有益的(因为我只有一台旧笔记本电脑作为客户端和一台运行 SQL Server 2008 的坚固服务器,并且为逻辑构建单独的服务只会引入更多延迟如果与在数据库中执行此操作相比)。

那么如何在 CLR 存储过程中正确使用实体框架并使用主机服务器提供的 SqlContext 来实现呢?

突然我在网上找不到任何例子。看起来还没有人吃过这个。这是否意味着这项任务很荒谬,我绝对不应该这样做?使用 T-SQL 和直接访问表而不是 EF 类不是很方便,因为我的模型大量使用继承,并且具有非常复杂的表类型结构,其中包含许多非常简单的表。

4

4 回答 4

2

你不能——至少现在不能。SQL Server 2005 到 2008 R2 中包含的 CLR 是 .NET 2.0 CLR - Entity Framework 4 需要 .NET 4 框架。

因此,目前,在 SQL-CLR 方法中执行操作时,您仅限于直接使用 ADO.NET 2.0。

那么更大的问题仍然存在:您到底为什么要在 SQL-CLR 函数中使用 EF4?这些旨在存储过程,用户定义的函数,用户定义的聚合 - 但肯定不是成熟的数据库应用程序,真的......

于 2010-05-08T12:55:21.930 回答
2

我们中的一些人并不热衷于在两个或更多地方维护数据库模式元数据。EF 非常适合这样做,但如果想要利用 SQL-CLR 的性能优势,则必须在其上下文中定义模式。目前,这意味着 SQL-CLR 程序集中的自定义元数据代码生成 DDL 以定义数据库并将其导入 EF。

于 2011-02-28T12:50:32.377 回答
1

不,你不能。Visual Studio 甚至不允许您添加文件或项目类型。(太糟糕了,我也想这样做来处理一些非常复杂的逻辑。)

于 2011-01-19T18:40:51.800 回答
1

似乎可以使用 SQL Server 2008 R2 或更高版本,它使用 .NET 版本。4.0。看到这个博客

我对我的 SQL Server 2010 Developer Eeition 运行以下命令:

select value from sys.dm_clr_properties where name = 'version'

并得到以下输出:

v4.0.30319

于 2012-05-06T06:14:36.193 回答