0

2 つのデータ オブジェクト間の関係を表す外部キー (他の 2 つのテーブルからの 2 の ID) である 2 つの列だけを持つ SQL 関連付けテーブルがあります。オブジェクトと null の間、または null と null の間に関係があることは無意味に思えるため、これらの列に NOT NULL 制約があるのは当然のようです。

驚いたことに、私の (WPF、LINQ、C#) プログラムがオブジェクトの関連付けをクリアしようとすると、次の送信で、列の 1 つを null にすることはできないという例外が発生します。null にしたくありません。行全体をクリアしたいのです。

ここで、null 制約を削除して例外をバイパスできますが、それは必要ないようです。

編集:実際には、SQL Server では 2 つの値が主キーであり、null は主キーで許可されていないため、SQL Server ではそれしかできません。これは理にかなっています...しかし、繰り返しますが、行を削除し、ID を null に設定しないでください。

だから私は尋ねます:

(経由で) 行を削除するとclear()、null 列の値に関する例外が発生するのはなぜですか?

そのような行をクリアする他の方法はありますか、または not null 制約を削除する必要がありますか?

それとも、私が理解していない何かがありますか?

詳細:

私のテーブルには2つの列があります:

RecipeID (PK, FK, int, not null)
AltRecipeID (PK, FK, int, not null)

C# LINQ-to-SQL コード:

RecipeToUpdate.PFW_AlternateRecipes.Clear();
App.db.SubmitChanges();

送信時の例外:

PFW_Recipe と PFW_AlternateRecipe の間の関係を削除しようとしました。ただし、リレーションシップの外部キー (PFW_AlternateRecipe.RecipeID) の 1 つを null に設定することはできません。

4

0 に答える 0