我可以使用 Entity Framework 4 中的 SELECT 等效项执行 INSERT

发布于 2024-10-12 01:44:09 字数 395 浏览 3 评论 0原文

我正在将应用程序从 SqlClient 迁移到使用 SQL Server 的实体框架 4。我遇到一种情况,必须将几行从一个表复制到另一个表,因此我使用 INSERT ... SELECT 来完成此操作,如下所示:

INSERT INTO dbo.Table1 (Reg1, Reg2, Reg3, Reg4, Reg5, Reg6, Reg7, Reg8)
SELECT Reg1, Reg2, Reg3, Reg4, Reg5, @Reg6, GETDATE(), @Reg8
FROM dbo.Table2 
WHERE Reg1 = @Reg1

我可以使用实体框架远程完成与此类似的操作吗?获取Table2中的所有行,并将它们逐行插入到Table1中?我该如何处理 GETDATE()?
塔克斯

I'm migrating an application from SqlClient to the Entity Framework 4, working with SQL Server. I have a situation where I have to copy several rows from one table to another, so I do it with an INSERT ... SELECT, as below:

INSERT INTO dbo.Table1 (Reg1, Reg2, Reg3, Reg4, Reg5, Reg6, Reg7, Reg8)
SELECT Reg1, Reg2, Reg3, Reg4, Reg5, @Reg6, GETDATE(), @Reg8
FROM dbo.Table2 
WHERE Reg1 = @Reg1

Can I accomplish something remotely similar to this with the Entity Framework, or would I have to get all of the rows from Table2, and insert them row by row in Table1? How could I handle the GETDATE()?
Tks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

望喜 2024-10-19 01:44:09

将 sql 放入存储过程中,然后从您的应用程序调用该存储过程 - 我只是使用普通 sql 客户端来调用执行过程,但没有理由不能将其映射到您的 EF 模型中,如果您真的很想然后从 EF 调用它。

如果您愿意/需要,您可以让它返回一个值。

Put the sql in a stored procedure, and then call that stored procedure from your app - I'd just use plain sql client to make the call to execute the proc, but no reason you can't map it into your EF model if you really wanted to and then call it from EF.

You can have it return a value if you want/need to.

转瞬即逝 2024-10-19 01:44:09

不,这在 EF 中不起作用。 EF 会将所有选定的数据从数据库加载到您的应用程序,将它们具体化为对象,并将这些对象一一插入到第二个表中。 EF 根本无法执行批处理操作

No this will not work in EF. EF will load all selected data from DB to your application materializing them as objects and insert these objects one by one to second table. EF is unable to do batch operations at all.

睫毛溺水了 2024-10-19 01:44:09

如果您可以使用 EF4 的新 CTP5 功能版本,现在允许通过 SqlQuery & 执行原始 SQL 查询和命令。 DbContext.Database 上的 SqlCommand 方法。

If you can use the new CTP5 Feature release of EF4, this now allows raw SQL queries and commands to be executed via the SqlQuery & SqlCommand methods on DbContext.Database.

情定在深秋 2024-10-19 01:44:09

不,EF4 不支持批量操作。

在您的场景中,我将在您的数据库中创建一个用户定义的表类型,它模仿dbo.Table1表。

创建一个接受该 UDT 并执行插入的存储过程:

INSERT INTO dbo.Table1 (Reg1, Reg2, Reg3, Reg4, Reg5, Reg6, Reg7, Reg8)
SELECT Reg1, Reg2, Reg3, Reg4, Reg5, @Reg6, GETDATE(), @Reg8
FROM @UdtPassedIn

并从常规 ADO.NET 调用该存储过程。

No, EF4 does not support bulk operations.

In your scenario, i would create a User Defined Table Type in your database, which mimics the dbo.Table1 table.

Create a stored procedure which accepts that UDT and performs the insert:

INSERT INTO dbo.Table1 (Reg1, Reg2, Reg3, Reg4, Reg5, Reg6, Reg7, Reg8)
SELECT Reg1, Reg2, Reg3, Reg4, Reg5, @Reg6, GETDATE(), @Reg8
FROM @UdtPassedIn

And call that from regular ADO.NET.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文