[英]How do I write this linq command to an equivalent delete SQL query?
多年来我没有编写过SQL,现在我正在开发一个“性能饥渴”的网站。 有人可以帮我转换为删除SQL命令吗?
我有很多这样的帮助我,这个对我来说很重要,谢谢!
我到目前为止:
Delete FROM [DbName].[dbo].[RatingListTriangleModels]
WHERE ...
Linq选择命令:
var allRatingListObjects = from row in ctx.RatingListTriangle
where
(row.To1Id == myToid && row.To2Id == theirTradeObjectid)
|| (row.To2Id == myToid && row.To3Id == theirTradeObjectid)
|| (row.To3Id == myToid && row.To1Id == theirTradeObjectid)
select row;
更新:这是我的工作解决方案:
using (SqlCommand command = new SqlCommand
("delete TBL from RatingListTriangleModels TBL where ( TBL.To1Id = @MY_ID and TBL.To2Id = @OTHER_ID ) or ( TBL.To2Id = @My_ID and TBL.To3Id = @OTHER_ID ) or ( TBL.To3Id = @My_ID and TBL.To1Id = @OTHER_ID )", cn))
{
// Add new SqlParameter to the command.
command.Parameters.Add(new SqlParameter("MY_ID", myToid));
command.Parameters.Add(new SqlParameter("OTHER_ID", theirTradeObjectid));
var no = command.ExecuteNonQuery();
}
这应该删除您在linq语句中指定的记录,但是您需要将@YOUR_ID
和@OTHER_ID
替换为您拥有的相应ID。
您可以使用SqlParameter
执行此操作。 例
delete from [DbName].[dbo].[RatingListTriangleModels] TBL
where ( TBL.To1Id = @YOUR_ID and TBL.To2Id = @OTHER_ID )
or ( TBL.To2Id = @YOUR_ID and TBL.To3Id = @OTHER_ID )
or ( TBL.To3Id = @YOUR_ID and TBL.To1Id = @OTHER_ID )
如果要删除linq使用TSQL选择的行,则可以执行此操作
DECLARE @p0 int;
DECLARE @p1 int;
SET @p0 = <some integer>;
SET @p1 = <some other integer>;
DELETE
[DbName].[dbo].[RatingListTriangleModels]
WHERE
([To1Id] = @p0 AND [To2Id] = @p1)
OR
([To2Id] = @p0 AND [To3Id] = @p1)
OR
([To3Id] = @p0 AND [To1Id] = @p1);
当然,您可能希望将语句传递给上下文中的ExecuteCommand
并将id作为参数传递,然后.Net将为您调用sp_executeSql
。 这将防止注入攻击,为您提供查询计划重用的好处和直接TSQL操作的灵活性。
我会告诫我的答案,像这样的简单操作可能会在linq中等效执行,而不会出现任何额外的复杂情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.