9

CRD (作成、読み取り、削除) のわかりやすい例は、MSDN のこちらにあります。

このページには、テスト データベースを作成するためのスクリプトへの素敵なリンクがあり、私はそうしましたが、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 を実行します。

このページでCRUDのUが表示されている場所を見逃した場合は、今すぐ撃って読むのをやめてください...

ここにいる教祖の一人が少し助けてくれませんか?

第一人者のがらくた作業負荷を軽減するには: 以下は、MSDN Web ページに表示されているコードとほぼ同じです。

Web ページで参照されている test-database-create .sqlスクリプトを実行し、以下のコードの SqlDataConnection 文字列をサーバーとデータベース名に合わせて編集するだけで、正常に動作するはずです。

クエリに加えた唯一の変更は、更新する行を 1 つだけ取得することです。これで、正確に 1 行が返されます。1行が変更されたという単純なケースを見ることがより重要に思えます。少なくとも一度に複数の変更を表示する前に。

達人は最後の 4 行を推奨される F#-Type-Provider の方法に変更して、クエリによって返されるデータを変更し、その変更された行をデータベースに書き込むことができますか?

たとえば、row.TestData1 を 10 から 11 に変更し、それをデータベースに書き込みます。

まとめ: MSDN ページは、F#-Type-Provider の初心者が CRUD で CRD を実行するのを容易にします。

達人は、CRUD で U を実行するための適切で簡単な F#-Type-Provider の方法について、初心者に記入してもらえますか?

どうもありがとう!

#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)
4

1 に答える 1

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

このページのコードは、C# ではありますが、これがどのように機能するかの別の例を示しています。基本的に、F#query式は (この場合) Linq-to-SQL をラップするだけです。したがって、私が投稿したコードが機能しない場合は、C# を使用した Linq-to-SQL の新しい .NET 4.5 の例をいくつか見てください。

于 2012-10-16T02:35:46.010 に答える