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')

它工作正常。LocationIdint类型,Locationstring类型。

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

4

1 回答 1

0

克雷格是对的。如果您调用ExecuteCommand的是实体框架 DataContext,则不能传入 T-SQL,因为实体框架 DataContext 只理解实体 SQL

此外,当您像您一样直接执行命令时,无需调用SubmitChanges- 这是一件好事,因为您调用SubmitChanges的数据上下文实例与您调用的实例不同ExecuteCommandGetDataContext每次调用它时都会创建一个实例。如果您想插入惯用的实体框架类型提供程序方式,它看起来更像这样:

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 回答