Доступ к данным F# и миграция EF
Я использовал F# в течение некоторого времени, и мне действительно это нравится.
Я хочу использовать провайдеров типов для доступа к данным, но хотел бы, чтобы миграция структуры сущностей.
Могу ли я использовать EF-миграции без сущностной структуры? Я в порядке написания кода миграции вручную, надеюсь, на F#.
1 ответ
In the case where you want to use EFCore, it's possible to isolate only the migrations in a C# project with MigrationsAssembly.
For example in a DbContext
module:
let setupOptions (optionsBuilder: DbContextOptionsBuilder) =
optionsBuilder.UseNpgsql(
"Host=localhost;Database=mydb;Username=postgres;Password=postgres",
fun opt -> opt.MigrationsAssembly "MyProject.Data.Migrations" |> ignore)
|> ignore
Services configuration:
services.AddDbContext<DbContext.MyDbName>(DbContext.setupOptions)
CLI:
dotnet ef migrations add CreateFoo -p ./MyProject.Data.Migrations -s ./MyProject.Api -v
dotnet ef database update -p ./MyProject.Data.Migrations -s ./MyProject.Api -v
There is also a work in progress project to support F# design-time:https://github.com/bricelam/EFCore.FSharp
F# type providers imply that there is already external data source i.e. they are inherently "Db First". Using EF Code First only to automatically generate migrations is not the best idea, I recommend plain SQL and some tools to keep track of migrations such as dbup. I answered it in details in similar but bigger question.
Конечно, вы можете использовать EF-миграции, не используя EF в своем приложении. Создайте отдельный проект и используйте миграцию Code First.
Я не знаю, что функция миграции лесов поддерживает F#. Либо страдать от C# для миграции, либо переводить код самостоятельно?