易于理解的CRD示例(创建,阅读,删除)出现在MSDN here
中制作一个测试数据库有一个很好的link on the page to a script,我这样做了,很容易让所有的例子都适用于CRD。
CRD页面上甚至还有方便的子标题:
(创建行)http://msdn.microsoft.com/en-us/library/hh361033.aspx#BKMK_UpdateDB
(读取行)http://msdn.microsoft.com/en-us/library/hh361033.aspx#BKMK_QueryData
(删除行)http://msdn.microsoft.com/en-us/library/hh361033.aspx#BKMK_DeleteRows
名为BKMK_UpdateDB的那个没有在CRUD中执行U.它的名字叫Update,但它确实在CRUD中使用了C.
如果我错过了where on this page显示了CR中的U,那就现在就开枪给我,然后退出阅读......
请问这位大师之一请提供一些帮助吗?
减轻大师的垃圾工作量:下面的代码几乎与the MSDN web page上的代码相同。
只需在网页上运行test-database-create .sql script referred to,在下面的代码中编辑服务器和数据库名称的SqlDataConnection字符串,它就可以正常运行。
请注意,我对查询所做的唯一更改是只获取一行进行更新。现在只返回一行。看起来更重要的是看到一行的简单情况发生了变化。至少在显示多次更改之前。
请问大师请将最后4行更改为推荐的F#-Type-Provider方式,以便对查询返回的数据进行更改,并将更改后的行写入数据库?
例如,将row.TestData1从10更改为11并将其写入db。
总结:MSDN page使我们F#-Type-Provider新手可以轻松地在CRUD中执行CRD。
请问大师可以用正确/简单的F#-Type-Provider方式填写新手,以便在CRUD中执行U?
非常感谢!
#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)
答案 0 :(得分:11)
我还没有机会尝试新的query
表达式 - 所以这只是猜测:
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
this page上的代码给出了另一个如何工作的例子,尽管是在C#中。基本上,F#query
表达式(在本例中)简单地包含Linq-to-SQL;所以,如果我发布的代码不起作用,你应该看一下使用C#的Linq-to-SQL的一些新的.NET 4.5例子。