F#typeprovider中的','附近的语法不正确使用datacontext插入查询

时间:2012-09-25 08:38:07

标签: f# f#-3.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属于int类型,Location属于string类型。

如果有人对此有所了解,请告诉我我错过了哪些内容。

1 个答案:

答案 0 :(得分:0)

克雷格是对的。如果您在实体框架DataContext上调用ExecuteCommand,则无法传入T-SQL,因为实体框架DataContext只能理解Entity 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