我正在考虑用Dapper替换NHibernate,但我很难理解Dapper是否支持我正在使用的NHibernate的一个关键功能。
正如this question的回答中所建议的那样,并且在this blog post NHibernate批处理中展示了满足某些条件时的插入。以下来自博客文章的NHibernate profiler截图显示了我所说的内容:
请注意,这不仅是在同一个事务下发生的插入,而是在一个语句/命令中捆绑了多个插入(对于可能滥用术语的道歉)
Dapper可以这样做吗?我的应用程序从这个功能中受益匪浅,我想我不必放弃它。我搜索了我能想到的所有关键字,但我没有看到任何暗示Dapper表现出相同行为的东西。
答案 0 :(得分:0)
您不需要服务器端/ Dapper启用批处理,它可以通过您的代码更好地控制,您可以对流程进行更精细的控制。我一直这样做。一个简单的逻辑就是,我们假设您必须批量插入一个List<T>
,其中包含大约100000条记录,现在将它除以List<T>[]
,数组大小为100,每个数组元素包含{{1}基于各种因素,有1000条记录(这可以是动态策略)。
您可以使用List<T>
异步触发ExecuteAsync
并使用List<T>
等待完成,这实际上会更好地匹配任何批量插入批处理性能