首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Dapper不能返回多个插入的行is?

为什么Dapper不能返回多个插入的行is?
EN

Stack Overflow用户
提问于 2016-10-05 22:38:05
回答 1查看 3.6K关注 0票数 5

我有一个SQL Server表,其中将使用以下方法插入行:

代码语言:javascript
运行
复制
var sql = @"
DECLARE @InsertedRows AS TABLE (Id BIGINT);
INSERT INTO Person ([Name], [Age]) OUTPUT Inserted.Id INTO @InsertedRows
VALUES (@Name, @Age);
SELECT Id FROM @InsertedRows;";

Person person = ...;

var id = connection.Query<long>(sql, person).First();

但是,如果我尝试插入多个项并使用以下方法返回所有插入的ids,则这一切都工作得很好:

代码语言:javascript
运行
复制
IEnumerable<Person> people = ...;    
var ids = connection.Query<long>(sql, people);

我收到一个错误:

System.InvalidOperationException :在此上下文中不允许参数(数组、列表等)的可枚举序列 在Dapper.SqlMapper.GetCacheInfo(标识标识、对象exampleParameters、布尔addToCache) 在Dapper.SqlMapper.d__23`1.MoveNext() --从抛出异常的前一个位置开始的堆栈跟踪结束--

如何返回Dapper中的多个插入in?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 09:48:14

某个地方,需要循环的东西。您有一个插入一行的sql语句,并在列表中发送代码。由于您喜欢字符串文本中的SQL,所以我坚持一次插入一个人,将循环放入C#中,并使用SELECT SCOPE_IDENTITY()恢复C#中的每个id。您不再需要@InsertedRow或OUTPUT。

如果您真的想在SQL中循环,我相信您需要查看表值参数来传递插入列表。Dapper非常乐意返回多个is。它抱怨多个人作为输入参数。

有一天,希望不久的将来,我们将以字符串形式回顾SQL,就像我们现在看到的山羊祭祀一样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39884768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档