F和ORM工具

F和ORM工具,orm,f#,Orm,F#,我想知道您使用F和ORM工具的最佳经验。F+linq2sql有什么优点吗 在当前版本中,对LINQ的F支持不如C中的平滑,但它可以很好地使用。我在实现时使用了F+linqtosql,并且能够使用F编写几乎所有的东西。甚至还有一些在C中没有的好特性 基本查询的语法基于引用的序列表达式: let q = <@ seq { for c in db.Customers do if c.Country = "UK" then yield c.Name } @&g

我想知道您使用F和ORM工具的最佳经验。F+linq2sql有什么优点吗

在当前版本中,对LINQ的F支持不如C中的平滑,但它可以很好地使用。我在实现时使用了F+linqtosql,并且能够使用F编写几乎所有的东西。甚至还有一些在C中没有的好特性

基本查询的语法基于引用的序列表达式:

let q = <@ seq { for c in db.Customers do
                   if c.Country = "UK" then yield c.Name } @>
F中的一个优点是可以使用引号拼接来重构代码:

let ukCustomers = 
  <@ seq { for c in db.Customers do 
             if c.Country = "OK" then yield c } @>

// Select names of all UK customers
let q = <@ seq { for c in %ukCustomers -> c.Name }
关于F支持的限制:

我不认为链接问题中暗示的更新有任何问题

当前版本的最大限制可能是它对嵌套查询的支持有限,例如在for循环体中使用Seq.filter,但这应该在的下一个版本中得到修复。事实上,如果您从源代码处编译它,您可能已经得到了它

如果可以选择,我建议使用LINQtoSQL而不是LINQtoEntities。LINQtoEntities不能很好地处理不可变类型,因此您无法轻松地返回F记录和F元组。同样,这在将来可能会有所改进。我最近对此做了一些工作,您可以在F PowerPack sources中找到初始支持


在当前版本中,对LINQ的F支持不像在C中那样平滑,但它可以很好地使用。我在实现时使用了F+linqtosql,并且能够使用F编写几乎所有的东西。甚至还有一些在C中没有的好特性

基本查询的语法基于引用的序列表达式:

let q = <@ seq { for c in db.Customers do
                   if c.Country = "UK" then yield c.Name } @>
F中的一个优点是可以使用引号拼接来重构代码:

let ukCustomers = 
  <@ seq { for c in db.Customers do 
             if c.Country = "OK" then yield c } @>

// Select names of all UK customers
let q = <@ seq { for c in %ukCustomers -> c.Name }
关于F支持的限制:

我不认为链接问题中暗示的更新有任何问题

当前版本的最大限制可能是它对嵌套查询的支持有限,例如在for循环体中使用Seq.filter,但这应该在的下一个版本中得到修复。事实上,如果您从源代码处编译它,您可能已经得到了它

如果可以选择,我建议使用LINQtoSQL而不是LINQtoEntities。LINQtoEntities不能很好地处理不可变类型,因此您无法轻松地返回F记录和F元组。同样,这在将来可能会有所改进。我最近对此做了一些工作,您可以在F PowerPack sources中找到初始支持