如何解决如何使用Entity Framework Core处理F#Option类型?
我将EF Core与F#一起使用,并且我有一个包含选项类型的实体/模型。但是,EF Core无法与F#Option<T>
类型配合使用。我可以使用Nullable<T>
,但是它在F#中不是很惯用,并且希望坚持使用Option
类型。
我查看了 Value Converter ,但文档显示null
无法使用Value Converter进行转换,此外,它在生成的SQL语句中不能很好地发挥作用,从而迫使客户端进行过滤而不是使用SQL子句。
namespace Db
open Microsoft.EntityFrameworkCore
open System
[<CLIMutable>]
type Invitation =
{ Id: Guid
Code: string
// HOW TO HANDLE OPTION TYPE
FirstName: string option
LastName: string option
Email: string
GeneratedAt: DateTime }
[<CLIMutable>]
type User =
{ Id: Guid
FirstName: string
LastName: string
Email: string
Password: string
PasswordSalt: string
PasswordHash: string }
type AppContext(opts) =
inherit DbContext(opts)
[<DefaultValue>]
val mutable private invitation: DbSet<Invitation>
member x.Invitation
with get() = x.invitation
and set v = x.invitation <- v
[<DefaultValue>]
val mutable private user: DbSet<User>
member x.User
with get() = x.user
and set v = x.user <- v
override _.OnConfiguring (options: DbContextOptionsBuilder) =
options.UseSnakeCaseNamingConvention()
|> ignore
在生成带有可选值的模型时,有什么办法可以解决这个问题?
解决方法
您可以使用EFCore.FSharp
中的value converter处理选项类型。
尽管它似乎不适用于导航属性和外键。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。