Linq 如何将U放入F#类型提供程序CRUD?

Linq 如何将U放入F#类型提供程序CRUD?,linq,linq-to-sql,f#,type-providers,Linq,Linq To Sql,F#,Type Providers,MSDN中出现了易于理解的CRD示例(创建、读取、删除) 有一个很好的测试数据库,我这样做了,很容易得到所有的例子为CRD工作 甚至在CRD页面上还有方便的子标题: (创建行) (读取行) (删除行) 名为BKMK_UpdateDB的程序不执行CRUD中的U。它的名字是Update,但它确实在CRUD中使用了C 如果我错过了《积垢》中的U,现在就杀了我,停止阅读 这里的一位上师能提供一点帮助吗 为了减轻大师们的垃圾工作负担:下面是代码,就像它出现在屏幕上一样 只需在网页上运行测试数据库creat

MSDN中出现了易于理解的CRD示例(创建、读取、删除)

有一个很好的测试数据库,我这样做了,很容易得到所有的例子为CRD工作

甚至在CRD页面上还有方便的子标题:

(创建行)

(读取行)

(删除行)

名为BKMK_UpdateDB的程序不执行CRUD中的U。它的名字是Update,但它确实在CRUD中使用了C

如果我错过了《积垢》中的U,现在就杀了我,停止阅读

这里的一位上师能提供一点帮助吗

为了减轻大师们的垃圾工作负担:下面是代码,就像它出现在屏幕上一样

只需在网页上运行测试数据库create.sql,在下面的代码中为服务器和数据库名称编辑SqlDataConnection字符串,它应该可以正常运行

请注意,我对查询所做的唯一更改是只获取一行进行更新。现在只返回一行。看起来更重要的是看到一行的简单情况发生了变化。至少在一次显示多个更改之前

专家能否将最后4行更改为推荐的F#类型提供程序方式,以更改查询返回的数据,并将更改后的行写入数据库

例如,将row.TestData1从10更改为11,并将其写入数据库

总结:对于我们F类型的提供者新手来说,使用CRUD进行CRD非常容易

能否请一位大师向我们介绍一下使用CRUD编写U的正确/简单的F#Type提供程序方法

非常感谢

#r "System.Data.dll"
#r "FSharp.Data.TypeProviders.dll"
#r "System.Data.Linq.dll"
open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq

type dbSchema = SqlDataConnection<"Data Source= --yourServer\yourInstance--;Initial Catalog= --YourTestDatabaseFromTheScript--;Integrated Security=SSPI;">
let db = dbSchema.GetDataContext()
let table1 = db.Table1

query { for row in db.Table1 do
        where (row.TestData1 <= 10)
        select row } 
    |> Seq.iter (fun row -> printfn "%d %s" row.TestData1 row.Name)
#r“System.Data.dll”
#r“FSharp.Data.TypeProviders.dll”
#r“System.Data.Linq.dll”
开放系统
开放系统.数据
开放系统.Data.Linq
打开Microsoft.FSharp.Data.TypeProviders
打开Microsoft.FSharp.Linq
类型dbSchema=SqlDataConnection
设db=dbSchema.GetDataContext()
设table1=db.table1
查询{查找db.Table1 do中的行
其中(row.TestData1 Seq.iter(趣味行->printfn“%d%s”row.TestData1 row.Name)

我还没有机会尝试新的
查询
表达式——所以这只是一个猜测:

query { for row in db.Table1 do
    where (row.TestData1 <= 10)
    select row } 
    |> Seq.iter (fun row ->
        // Update the row with some new value.
        row.TestData1 <- row.TestData1 + 1)

// Now, call .SubmitChanges() to execute the SQL and update the database
try
    db.DataContext.SubmitChanges()
    printfn "Successfully updated the rows."
with
   | exn -> printfn "Exception:\n%s" exn.Message
query{查询db.Table1 do中的行
其中(row.TestData1 Seq.iter)(有趣的行->
//用一些新值更新行。
row.TestData1 printfn“异常:\n%s”exn.Message

上的代码给出了另一个示例,说明了这是如何工作的,尽管是在C#中。基本上,F#
查询
表达式(在本例中)只是将Linq包装为SQL;因此,如果我发布的代码不起作用,您应该看看一些新的.NET 4.5示例,其中包含C#的Linq to SQL

“如果我错过了这页上U in CRUD的显示位置,现在就开枪吧,然后停止阅读…”好吧,你在询问更新时确实发布了查询代码,而不是更新代码。:-p谢谢你,杰克。猜对了-我测试了你的代码,效果很好。