靠近';的语法不正确';在F#typeprovider中插入带有datacontext的查询

靠近';的语法不正确';在F#typeprovider中插入带有datacontext的查询,f#,f#-3.0,F#,F# 3.0,我试图通过F#typeprovider datacontext插入数据。我在数据库dbo.tbl\u Location中有一个表,希望通过以下简单查询插入数据 let InsertTaskDetails() = dbSchema.GetDataContext().DataContext.ExecuteCommand("Insert into dbo.tbl_Location (LocationId,Location) Values (11, 'india')") dbSchema.Get

我试图通过F#typeprovider datacontext插入数据。我在数据库
dbo.tbl\u Location
中有一个表,希望通过以下简单查询插入数据

let  InsertTaskDetails() = 
 dbSchema.GetDataContext().DataContext.ExecuteCommand("Insert into dbo.tbl_Location (LocationId,Location) Values (11, 'india')")
 dbSchema.GetDataContext().DataContext.SubmitChanges()
但我得到了一个错误:

“,”附近的语法不正确

我无法理解在SQLServer2008中运行相同查询时发生了什么

Insert into dbo.tbl_Location (LocationId,Location) Values (11, 'india')
它很好用<代码>位置ID为
int
类型,
位置
字符串
类型


如果有人对此有想法,请告诉我我在哪里错过了这些东西。

克雷格是对的。如果在实体框架DataContext上调用
ExecuteCommand
,则无法传入t-SQL,因为实体框架DataContext只理解

另外,当您直接执行像这样的命令时,不需要调用
SubmitChanges
——这是一件好事,因为您在数据上下文的不同实例上调用
SubmitChanges
,而不是调用
ExecuteCommand
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

呃,你用的是哪种数据上下文??如果是EF,它就不理解SQL。