2012-09-25 24 views
0

我試圖通過F#typeprovider datacontext插入數據。我在數據庫dbo.tbl_Location中有一個表,想用下面的簡單查詢插入數據。在F#typeprovider插入查詢中使用datacontext'''錯誤的語法

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

但我得到的錯誤:

Incorrect syntax near ','

我不明白髮生了什麼,當我在SQL Server 2008中

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

它工作正常運行相同的查詢。 LocationIdint類型和Locationstring類型。

如果有人有關於它的想法,請告訴我我在哪裏丟失的東西。

+3

呃,你使用什麼樣的DataContext?如果是EF,它不理解SQL。 –

回答

0

克雷格是對的。如果您在實體框架DataContext上調用ExecuteCommand,則無法傳入T-SQL,因爲實體框架DataContext只能識別Entity SQL

而且,當你直接執行命令像你這樣,就沒有必要打電話SubmitChanges - 這是一件好事,因爲你的數據上下文的不同實例比你叫ExecuteCommand上調用SubmitChanges 。每次調用它時,GetDataContext都會創建一個實例。如果你想插入慣用的實體框架類型提供者的方式,它會看起來更像這樣:

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