私のデータベースには、このようなテーブルがあります
table foo
int pk
int someFK NULL
someFK の外部キー制約と someFK の一意の制約。これは、MySQL データベースでは、someFK で NULL を指定しない限り、もちろん対応するテーブルに行が存在する必要があることを意味します。ただし、一意の制約がオンになっている場合でも、someFK に NULL を含む複数の行を含めることもできます。
私のコードでは、System.Data 名前空間を使用し、次のようにします。
DataTable table = new DataTable("Foo");
DataColumn col = null;
DataColumn[] primaryKey = new DataColumn[1];
col = table.Columns.Add(FooPropertyName, typeof(int));
col.Unique = true;
col.AutoIncrement = true;
primaryKey[0] = col;
table.PrimaryKey = primaryKey;
col = table.Columns.Add(SomeFkPropertyName, typeof(int));
col.Unique = true;
col.AutoIncrement = false;
ただし、DataTable に 2 つの DataRow を追加し、これら 2 つの主キーが異なり、どちらも someFK 列に DBNull がある場合、エラー メッセージ Exception Type: System.Data.ConstraintException Exception Message: Column 'somefk' is constrainted to一意であること。値 '' は既に存在します。
これは私が期待するものではないので、誰かがこれを回避する方法を知っているかどうか疑問に思っていました(一意のプロパティを削除せずに)