【发布时间】:2015-09-24 15:41:22
【问题描述】:
实体框架有没有办法在向服务器发送查询时使用下一个语法:
INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe');
因为这会提高性能。我正在使用 sql profiler 并看到默认情况下它使用单数插入,例如
INSERT INTO MyTable (id, name) VALUES (1, 'Bob')
INSERT INTO MyTable (id, name) VALUES (2, 'Peter')
INSERT INTO MyTable (id, name) VALUES (3, 'Joe')
我知道有很多原因不支持此功能,例如 sql server 最大数据包大小,....只是询问是否可能。
【问题讨论】:
-
我认为第一个语法是为了方便,它总是解析为第二个查询。这并不意味着 db 有 3 次往返,它们可能在一次往返中一起发送。
-
其实我认为 EF 也使用 AddRange 的往返
-
使用 sql profiler 查看,实体框架将每个查询发送到服务器。当然在事务中,例如:开始事务插入 t1 () values(),插入 t1()values(),提交。即使使用 AddRange 也是如此。即使实体框架确实在一次往返中发送了所有三个查询,sql server 也会单独执行它们。
标签: entity-framework entity-framework-6