2012-09-25 23 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