В моей базе данных есть такая таблица
table foo
int pk
int someFK NULL
с ограничением внешнего ключа на someFK и ограничением уникальности на someFK. Это означает, что в базе данных MySQL, которая у меня есть, если я не укажу NULL в someFK, конечно, должна быть строка в соответствующей таблице. Однако у меня также может быть несколько строк с NULL в someFK, даже если включено ограничение уникальности.
В моем коде я использую пространство имен 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;
Однако, если я добавлю два DataRows в свой DataTable, и эти два имеют разные первичные ключи, но оба имеют DBNull в столбце someFK, я получаю сообщение об ошибке Тип исключения: System.Data.ConstraintException Сообщение об исключении: столбец 'somefk' ограничен быть уникальным. Значение '' уже присутствует.
Это не то, что я ожидаю, поэтому мне было интересно, знает ли кто-нибудь, как обойти это (без удаления уникального свойства)