Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server F#提交更改后获取ID(使用SQLDataConnection类型提供程序)_Sql Server_F#_Ienumerable_Type Providers_Seq - Fatal编程技术网

Sql server F#提交更改后获取ID(使用SQLDataConnection类型提供程序)

Sql server F#提交更改后获取ID(使用SQLDataConnection类型提供程序),sql-server,f#,ienumerable,type-providers,seq,Sql Server,F#,Ienumerable,Type Providers,Seq,我正在使用类型提供程序将数据插入SQL Server数据库。我想要我刚刚插入的条目的ID。在C#中,我可以在调用SubmitChanges()后从“foo”访问ID。我在F#不会这样。它与不变性有关吗?有没有一种方法可以访问这些ID而不必再次调用DB foo |> dbContext.MyTable.InsertAllOnSubmit dbContext.DataContext.SubmitChanges() //data in foo gets added, but Ids are a

我正在使用类型提供程序将数据插入SQL Server数据库。我想要我刚刚插入的条目的ID。在C#中,我可以在调用SubmitChanges()后从“foo”访问ID。我在F#不会这样。它与不变性有关吗?有没有一种方法可以访问这些ID而不必再次调用DB

foo
|> dbContext.MyTable.InsertAllOnSubmit
dbContext.DataContext.SubmitChanges()

//data in foo gets added, but Ids are all 0.
//In MyTable, Id is an int identity(1,1) primary key

对不起,我没有指出foo是seq。这似乎就是问题所在


在InsertAllOnSubmit之前在foo上做一个|>Seq.toList,我就可以看到ID了。

你确定吗?我不知道foo中有什么,但是插入序列应该可以。例如:

let dbx = dbSchema.GetDataContext()
let x = seq { 1L..1000L}
let data = seq {for i in  x -> dbSchema.ServiceTypes.Table_1(Number = i)}
dbx.Table_1.InsertAllOnSubmit(data)
dbx.DataContext.SubmitChanges()
给我这个:

其中数字来自x,ID是主键,标识列

编辑

我明白了,在本例中,您希望从
数据中获取ID。然后强制枚举(或将数据保存在数组/列表中)也是我知道的唯一方法。DataContext可能有一些选项

let data = [for i in  x -> dbSchema.ServiceTypes.Table_1(Number = i)]
//let data' = data |> Seq.toList
dbx.Table_1.InsertAllOnSubmit(data)
dbx.DataContext.SubmitChanges()

query { for row in data do 
        select row.ID }  
val it:seq=seq[10001L;10002L;10003L;10004L;…]


你能展示适用于你的等效C#代码吗?这并不能回答问题,问题是如何观察新插入记录的id。@ildjarn你是对的,我误读了Q。OP希望id来自对象,而不是db。六羟甲基三聚氰胺六甲醚。。。。让我检查并删除/更新。