【发布时间】:2011-12-17 18:09:13
【问题描述】:
尝试使用匿名类型进行查询:
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 to Entities。"}
如果我将值直接映射到一个类型,这会有意义,但匿名类型不应该抛出这个异常,因为它们基于对象初始化器功能?不幸的是,我在匿名类型上发现的任何东西似乎都表明这是正确的语法。那个或类似的东西:
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# 没有“匿名类型”的概念——这是 C# 的一个特性。在这里,您正在构建普通元组。
-
您是否尝试将错误隔离到更具体的构造(即首先尝试 Seq.map (fun i -> i.Id)、Seq.map (fun i -> i.Id、 i.Id)) 等?
标签: entity-framework f#