2013-06-18 78 views
6

我正在玩类型提供程序,特别是sql实体框架类型提供程序。 我正在写一个有很多对象的数据库的测试,而且它很远,所以连接速度有点慢。每次我构建项目时,都需要很长时间,完成构建需要好几分钟。F#类型提供程序非常非常缓慢构建

我在想什么编译器不缓存类型信息?

P.S. F#交互式会更糟......

+0

你基准有什么样你认为这是慢?你有什么比较点?我的意思是,你是否尝试过针对不同后端的Type Providers?投票结束,因为这是一个过于宽泛的问题。 –

+1

每次需要几分钟的构建需要太长时间...即时比较每个构建。 –

+0

每次需要几分钟的构建?我曾经在一个商业C++应用程序上工作,每次构建它时都需要花费1/2小时来构建,而这是经过几轮优化后的结果。除非您每次都在构建玩具代码,否则编译需要一些时间。说“太慢了”有点像最终用户说“这太难用了” - 模糊而漂亮无用。 –

回答

9

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

type schema = SqlDataConnection< LocalSchemaFile = "Schema.dbml", ForceUpdate = false, ConnectionString = @"Data Source=<insert your connection string here>" > 
0

况且什么可以被定义为一个“缓慢建设”,(如果你在红,绿,TDD开发周期,建立迅速成为慢!),我搬到我的客户类型提供代码到一个单独的项目。我已经将ForceUpdate设置为false,但仍然生成速度很慢(显然仍然会对生成的dbml文件进行一些背景检查,实际上我的例子是wsdlschema文件)。

在将所有类型的提供程序代码移动到单独的项目之后,构建明显更快!

注:加载互动更是快,只有你有将引用添加到DLL的各类