0

F# typeprovider datacontext を介してデータを挿入しようとしています。データベースにテーブルがあり、dbo.tbl_Location次の単純なクエリでデータを挿入したいと考えています。

let  InsertTaskDetails() = 
 dbSchema.GetDataContext().DataContext.ExecuteCommand("Insert into dbo.tbl_Location (LocationId,Location) Values (11, 'india')")
 dbSchema.GetDataContext().DataContext.SubmitChanges()

しかし、私はエラーが発生しています:

「,」付近の構文が正しくありません

SQL Server 2008 で同じクエリを実行すると何が起こっているのか理解できません

Insert into dbo.tbl_Location (LocationId,Location) Values (11, 'india')

それは正常に動作します。タイプでLocationIdあり、タイプです。intLocationstring

誰かがそれについてアイデアを持っている場合は、私が見逃している場所を教えてください.

4

1 に答える 1

0

クレイグは正しい。Entity Framework DataContext で呼び出しExecuteCommandている場合、Entity Framework DataContext はEntity SQLのみを理解するため、T-SQL を渡すことはできません。

また、自分のようにコマンドを直接実行する場合、呼び出す必要はありませんSubmitChanges。これは良いことです。呼び出しSubmitChangesたデータ コンテキストのインスタンスとは異なるインスタンスを呼び出しているからですExecuteCommandGetDataContext呼び出すたびにインスタンスを作成します。慣用的な Entity Framework Type Provider Way を挿入したい場合は、次のようになります。

type tbl_Location = dbSchema.ServiceTypes.tbl_Location

let insertTaskDetails () =
    use db = dbSchema.GetDataContext() // it's disposable!
    db.tbl_Locations.AddObject(tbl_Location(LocationId=11, Location="india"))
    db.DataContext.SaveChanges() |> ignore
于 2012-09-27T21:44:28.823 に答える