Я пытался решить эту проблему (особенно для Entity Framework) во время какого-то контрактного проекта, который я делал для команды F #, и вы можете найти экспериментальное решение в F # PowerPack sources .Он не полностью протестирован, и вам придется создать его самостоятельно.Экспериментальное решение заменяет все кортежи F # и записи F # в запросе другими (изменяемыми) типами, а затем преобразует результаты обратно в записи / кортежи.
РЕДАКТИРОВАТЬ Не было упоминания об определениикласс в вашем вопросе, но я оставлю здесь пример для тех, кто может прийти сюда с той же проблемой.
Нет простого обходного пути.Неудачным решением является явное определение класса со свойствами:
type News() =
let mutable id = 0
let mutable author = ""
let mutable title = ""
let mutable content = ""
member x.ID with get() = id and set(v) = id <- v
member x.Author with get() = author and set(v) = author <- v
member x.Title with get() = title and set(v) = title <- v
member x.Content with get() = content and set(v) = content <- v
Это очень уродливо по сравнению с записями, но это единственный способ сделать это в текущей версии F #.Это то, о чем знает команда F #, поэтому в следующей версии может быть какое-то лучшее решение.