1

products5列のDBテーブルがあります。が主Idキーです。SQL Server Management Studio では、ここでこれを明確に確認できます。

スクリーンショット 1

= 69 とproduct= "Lawn Darts"があります。= 420 と= "Lawn Darts"で新しい製品を挿入しようとしています。挿入された製品の ID を指定できるように、ID 挿入を使用しようとしています。つまり、名前は同じですが、ID が異なります。これは問題ないはずですよね?IdNameIdName

LINQ --> SQL を使用して C# コンソール アプリに挿入しています。Name同じで異なるを挿入しようとするとId、次のエラー メッセージが表示されます。

一意のインデックス 'IX_Name' を持つオブジェクト 'dbo.Products' に重複するキー行を挿入できません。重複キー値は (ローン ダーツ) です。

非キーの場合はなぜですか?

4

1 に答える 1

3

まあ、これは私が作っていたよりもずっと簡単でした。ポインターを提供してくれた @rook に感謝します。

列は主キーではありNameませんが、「一意のインデックス」であると指定されていました。SQL Server Management Studio で間違った設定を探していたので、見落としていました。私は「プロパティ」で探していました。私がする必要があったのは、「名前」列を右クリックして、「インデックス/キー...」オプションを選択することでした。Is Uniqueこれにより、属性を「いいえ」に変更できるウィンドウが表示されます。

スクリーンショット

または、コード ファーストの移行を使用しているため、C# で定義されているプロパティからデータ注釈を削除し、このルートを介して DB の更新に進むことができます。

前:

[Index(IsUnique = true)]
[MaxLength(255)]
public string Name { get; set; }

後:

[MaxLength(255)]
public string Name { get; set; }
于 2016-09-13T01:59:05.020 に答える