可以Linq到SQL / Linq到Entities生成MERGE语句吗? [英] Can Linq to SQL/Linq to Entities generate a MERGE statement?

查看:241
本文介绍了可以Linq到SQL / Linq到Entities生成MERGE语句吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

寻找组合的INSERT / UPDATE / DELETE语句,MERGE正是我所需要的,但我似乎无法找到,如果LINQ / SQL支持它(从的 http://www.sqlbook.com/SQL-Server/SQL-MERGE-35.aspx

   - 合并订单项目进入的OrderItems表
合并为OrderItem的作为OI
使用@UpdatedItems UI
ON (oi.OrderID = ui.OrderID AND oi.ProductID = ui.ProductID)
当MATCHED THEN
更新集数量= ui.Quantity,UnitCost = ui.UnitCost
当没有,那么$ MATCHED b $ b将(订单ID,产品ID,数量,UnitCost)
值(@OrderID,ui.ProductID,ui.Quantity,ui.UnitCost)
当源未然后再配
DELETE;


解决方案

当前版本 LINQ到SQL 不产生合并语句。您必须创建一个自定义的的Upsert 方法的代码做一个的Upsert


Looking for a combined INSERT/UPDATE/DELETE statement, MERGE is exactly what I need, but I can't seem to find if LINQ/SQL supports it (from http://www.sqlbook.com/SQL-Server/SQL-MERGE-35.aspx)

-- Merge order items into OrderItems table
MERGE INTO OrderItem As oi
USING @UpdatedItems ui
ON (oi.OrderID = ui.OrderID AND oi.ProductID = ui.ProductID)
WHEN MATCHED THEN
    UPDATE SET Quantity = ui.Quantity, UnitCost = ui.UnitCost
WHEN NOT MATCHED THEN
    INSERT (OrderID, ProductID, Quantity, UnitCost)
    VALUES (@OrderID, ui.ProductID, ui.Quantity, ui.UnitCost)
WHEN SOURCE NOT MATCHED THEN
    DELETE;

解决方案

Current version of LINQ to SQL does not generate a MERGE statement. You must create a custom Upsert method in code to do an Upsert.

这篇关于可以Linq到SQL / Linq到Entities生成MERGE语句吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆