LINQ to SQL - Nullable INT в ForeignKey = " не удается создать ассоциацию…"
У меня есть таблица, которая имеет первичный ключ, который является INT... У меня есть другая таблица, которая имеет отношение foreignkey к этой первой таблице, но это NULLABLE INT.
Это совершенно нормально, и 100% приемлемо для SQL... однако LINQ to SQL жалуется на несоответствующие типы ("int to Nullable[int]").
сообщение об ошибке: не удается создать ассоциацию "Store_People". Свойства не имеют совпадающих типов: "PersonID", "ID".
Как мне решить это так что дизайнер перестает кричать на 100% правильное использование SQL?
3 ответов
вот что я собрал вместе. Колонки Table1Id таблица2-это внешний ключ допускает значения NULL в таблице table1. Я даже добавил несколько записей данных и протестировал некоторые запросы Linq...
редактировать: поскольку я получаю некоторые downvotes (по-видимому) для сломанной ссылки, потому что этому вопросу 6 лет, и хост, который я использовал, не выжил... вот обновленная версия.
Я нашел проблему. Вы можете создать ассоциацию только в том случае, если родительский класс не имеет поля Nullable в качестве ключа.
Итак, это:
приведет к ошибке:
...но это:
будет прекрасно работать.
Это похоже на ошибку (или, по крайней мере, глупость LINQ to SQL)... но мне нравится другое.
У меня сейчас именно такая ситуация в DBML, и она работает нормально.
Первичный Ключ
- Nullable-False
- Первичный Ключ-True
- тип данных сервера-int не NULL IDENTITY
- Type-int (System.Int32)
Внешний Ключ
- Nullable-Trure
- Первичный Ключ-False
- тип данных сервера-Int
- Type-int (System.Int32) (фактически определяется как Nullable в контексте.дизайнер.cs файл)