C# 为F#数据层使用单独的迁移项目

C# 为F#数据层使用单独的迁移项目,c#,.net,f#,entity-framework-core,C#,.net,F#,Entity Framework Core,我正在尝试在F#NET 4.7.2上为我的EF核心项目设置迁移。目前,我拥有以下数据上下文: type MyContext = inherit DbContext new() = { inherit DbContext() } new(options: DbContextOptions<MyContext>) = { inherit DbContext(options) } [<DefaultValue>] val mutab

我正在尝试在F#NET 4.7.2上为我的EF核心项目设置迁移。目前,我拥有以下数据上下文:

type MyContext  =
    inherit DbContext

    new() = { inherit DbContext() }
    new(options: DbContextOptions<MyContext>) = { inherit DbContext(options) }

    [<DefaultValue>]
    val mutable apples: DbSet<AppleEntity>
    member x.Apples
        with get () = x.apples
        and set v = x.apples <- v

键入MyContext=
继承DbContext
new()={inherit DbContext()}
新建(选项:DbContextOptions)={继承DbContext(选项)}
[]
val mutable apples:DbSet关于使用单独的迁移项目,说明了以下技巧:

如果没有现有迁移,请在包含DbContext的项目中生成一个迁移,然后将其移动。这一点很重要,因为如果迁移程序集不包含现有迁移,则Add migration命令将无法找到DbContext


但这对我来说是不可能的,因为环境是在一个F#项目中。有人知道从这里该去哪里吗?

EF不友好,而且很抱歉,他们不打算改善对其他语言的支持。如果您需要迁移,您必须使用另一个框架,如DbUp或另一个ORM,如Linq2DB,Dapper。更简单的选择是在C#中定义数据层,并从其他F#项目中引用它

我通过创建C#版本的MyContext并运行
添加迁移
命令来解决这个问题。然后我删除了它,并将
MyContextModelSnapshot.cs
Initial.designer.cs
中的引用更改为我的F#数据上下文