匿名型が機能するクエリを取得しようとしています。
let temporaryBookModel =
query <@ context.Books
|> Seq.filter (fun book -> book.Id = bookId)
|> Seq.map(fun item -> (item.Id, item.ParentUser.Id, item.ParentUser.Alias, item.Tagline, item.Title, item.Visible, item.CreatedDate))
|> Seq.head @>
そして私は続けています:
{"でサポートされているのはパラメータなしのコンストラクタと初期化子だけです エンティティへのLINQ。 "}
値を型に直接マッピングしていたとしても意味がありますが、匿名型はオブジェクト初期化機能に基づいているので、この例外をスローしてはいけません。残念ながら、匿名型で見つけたものはすべてこれが正しい構文だと言っているようです。それかこれのようなもの:
let temporaryBookModel =
query <@ context.Books
|> Seq.filter (fun book -> book.Id = bookId)
|> Seq.map(fun item -> (("a", item.Id), ("b", item.ParentUser.Id), ("c", item.ParentUser.Alias), ("d", item.Tagline), ("e", item.Title, item.Visible), ("f", item.CreatedDate)))
|> Seq.head @>
F#は匿名型をサポートしますか?
私が知っているように - それは違います。しかし、回避策は2つあります。
type Book =
{
Id: int;
ParentId: int;
ParentAlias: string;
TagLine: string;
Title: string;
Visible: bool;
CreatedDate: DateTime;
}
使い方のコード行は次のようになります。
...
|> Seq.map
(fun item ->
{
Id = item.Id;
ParentId = item.ParentUser.Id;
ParentAlias = item.ParentUser.Alias;
TagLine = item.Tagline;
Title = item.Title;
Visible = item.Visible;
CreatedDate = item.CreatedDate
})
あなたが同様の質問で見つけることができるより多くの説明ここに
更新:
私にとってのレコードタイプの使用法は、より洗練された解決策です、しかしEntity Frameworkでは動作しないようです - F# - >パラメータなしのコンストラクタで記録しますか?。
だからTomas Petricekの回答によると - それはコンストラクタと必要なプロパティの少ないパラメータで明示型を宣言する必要があります。