我正在尝试将带有CLIMutable属性的F#记录类型用作具有Entity Framework的实体。选择实体和添加新实体工作正常,但更新实体存在问题。显然我不能使用赋值运算符(&lt ;-)来为可变记录类型的字段赋值。
有没有办法对现有记录的字段进行分配?
[<CLIMutable>]
[<Table("UserProfile")>]
type UserProfile = {
[<Key>]
Id : int
Username : string }
type Context() =
inherit DbContext(connectionString)
[<DefaultValue>]
val mutable private _users : DbSet<UserProfile>
member this.Users
with get() = this._users and set(v) = this._users <- v
let updateUsername id username =
use context = new Context()
let user = context.Users.Find(id : int)
user.Username <- username //This line does not compile
context.SaveChanges()
答案 0 :(得分:2)
type Car = {
Make : string
Model : string
mutable Odometer : int
}
let myCar = { Make = "Fabrikam"; Model = "Coupe"; Odometer = 108112 }
myCar.Odometer <- myCar.Odometer + 21
CLIMutable
属性存在,以便框架等可以填充记录。如果您需要自己修改记录,只需通知F#编译器您希望能够更新该字段。