3

LINQ to SQL を使用しているブラウンフィールド プロジェクトで問題が発生しています。これにより、テーブル内のすべての列の句をTable<T>.DeleteOnSubmit持つ SQL クエリが呼び出されます。WHERE

これはデフォルトの動作ですか?主キーのみで一致するように変更するにはどうすればよいですか?

編集

確認のために、生成されたクラスには主キーがあります。

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

2 に答える 2

5

はい - Linq-to-SQL データ モデルには、UpdateCheck任意のテーブルの列ごとに呼び出されるプロパティがあります。そのプロパティは、その列を使用して、行を更新する前に行が変更されていないことを確認するかどうかを示します。

その同じプロパティは、行を削除する前に行が変更されていないことを確認するためにも使用されます。したがって、すべての列 (主キーを除く) をUpdateCheck = Neverモデルに設定するだけで、探しているものが得られるはずです。

ここに画像の説明を入力

于 2012-07-04T05:36:39.367 に答える
2

SQL テーブル構造や LINQ-to-SQL クラスを見なければ、それを判断するのは困難です。

ただし、表示される動作は、テーブルに主キーがあると LINQ-to-SQL レイヤーが認識しない場合にレコードを識別することです。

問題のテーブルに対して LINQ-to-SQL クラスを再生成し、主キーが適切に属性付けされた正しいモデルが生成されないかどうかを確認する必要があります。

于 2012-07-04T05:33:56.910 に答える