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 に設定することはできません。