.net - Table<T>.DeleteOnSubmit 生成的 SQL 匹配所有列

标签 .net linq-to-sql

我在使用 LINQ to SQL 的棕地项目中遇到了一个问题,即调用 Table<T>.DeleteOnSubmit导致具有 WHERE 的 SQL 查询表中每一列的子句。

这是默认行为吗?我该如何更改它以使其仅匹配主键?

编辑

确认一下,生成的类有一个主键:

[Column(Name="id", Storage="_Id", AutoSync=AutoSync.OnInsert, 
        DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public long Id
{
    ...
}

最佳答案

是的 - Linq-to-SQL 数据模型有一个名为 UpdateCheck 的属性,适用于任何表中的每一列。该属性指示该列是否将用于在更新行之前检查该行是否未更改。

同一属性还用于在删除某行之前检查该行是否未更改。因此,如果您只是将模型中的所有列(主键除外)设置为 UpdateCheck = Never,那么您应该得到您要查找的内容。

enter image description here

关于.net - Table<T>.DeleteOnSubmit 生成的 SQL 匹配所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322818/

相关文章:

c# - 自动初始化 C# 列表

c# - LINQ to SQL 通配符

c# - 正在更新 LINQ to SQL,但我的查询来自联接?无法使用使用联接的查询进行更新?

linq-to-sql - 使用 linq-to-sql 返回计数

c# - 我应该重用作为参数传递的集合吗

.net - MQ系列消息不止一次被读取

C# Linq to SQL 包含安全的 sql 注入(inject)

c# - Linq To Sql 搜索多列和多个词

.net - VB.net 中的 #warning 指令

c# - 类型 'System.Drawing.Image' 在未引用的程序集中定义