具有EF代码优先/持续集成问题的F#类型提供程序

时间:2018-03-12 17:13:11

标签: f# entity-framework-6 continuous-integration ef-code-first type-providers

我们有一个基于C#EF Code First的大型代码库。最近增加了一个F#项目。该项目使用FSharp.Data.SqlClient(http://fsprojects.github.io/FSharp.Data.SqlClient/)类型提供程序连接到DB。

这造成了一个巨大的问题:F#类型提供者需要DB(和所有引用的结构)存在之前整个项目可以从头开始编译,但EF需要编译整个项目,然后才能创建/更新数据库。随后,无法再从头创建数据库甚至修改数据库。

虽然不使用类型提供程序显然是可能的,但它并不是一个有吸引力的解决方案,因为它使类型提供程序的整个目的无效,并且需要编写已经由它们完成的代码。

有没有人有任何想法如何处理?非常感谢!

1 个答案:

答案 0 :(得分:1)

扩展我的评论,假设您目前只有2个VS项目:

  1. 包含所有内容的C#项目,包括EF代码
  2. 包含使用类型提供程序的代码的F#项目
  3. 您可以做的是投入3项目解决方案:

    1. 一个新的小型C#项目,只执行EF内容(迁移,模式定义,类声明)
    2. 包含使用类型提供程序的代码的F#项目
    3. 您现有的C#项目包含ef类和ef相关内容但引用了#1和#2。
    4. 这样,您的EF C#项目可以先编译 然后再运行迁移。然后你的F#项目编译好了。最后,您的第三个项目(包含依赖于EF和F#项目的其余逻辑)可以成功编译。

相关问题