6

我正在玩类型提供程序,特别是 sql 实体框架类型提供程序。我正在针对具有大量对象的数据库编写测试,并且它是远程的,因此连接有点慢。每次我构建项目都需要很多时间,构建完成需要几分钟。

我错过了什么为什么编译器不缓存类型信息?

PS 使用 F# 交互更糟糕....

4

3 回答 3

11

尝试使用数据提供者的 LocalSchemaFile 属性。这指向一个用于生成类型的 .csdl 文件。您可以通过将 ForceUpdate 属性设置为 true 来让类型提供程序更新此文件。要从缓存模式运行,只需将 ForceUpdate 设置为 false。下面是我使用 SqlDataConnection 提供程序执行此操作的方法,它与 SqlEntityConnection 提供程序非常相似。

type schema = SqlDataConnection< LocalSchemaFile = "Schema.dbml", ForceUpdate = false, ConnectionString = @"Data Source=<insert your connection string here>" >
于 2013-06-18T15:15:24.567 回答
0

除了可以定义为“缓慢构建”的内容(如果您在红绿 tdd 开发圈中,构建速度很快就会变慢!),我将客户端类型提供程序代码移到了一个单独的项目中。我已经将 ForceUpdate 设置为 false,但构建仍然很慢(显然仍在对生成的 dbml 文件进行一些后台检查,在我的情况下实际上是 wsdlschema 文件)。

将所有类型提供程序代码移至单独的项目后,构建速度明显加快!

注意:加载交互更快,只需添加对类型的 dll 的引用

于 2013-07-31T16:56:25.900 回答
0

似乎瓶颈在远程连接中。我还假设您必须经常编辑和重新编译数据库访问代码。

某些类型提供程序可以指向本地 SQL 脚本而不是实时连接,如果不是这种情况,则创建一个本地数据库,它将复制模式(如果有的话,还可以在“枚举”表中复制静态数据)。类型提供程序/编译器和运行时的连接不必相同。

有一些工具可以偶尔同步模式,例如 Red Gate SQL 比较(这是一个很棒但不是免费的),或者只是重新生成完整的数据库模式 SQL 并重新创建本地数据库并偶尔运行一次(这也可以是自动化的,但是这是一个不同的故事)。

于 2019-08-20T15:20:03.267 回答