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...

enter image description here

редактировать: поскольку я получаю некоторые downvotes (по-видимому) для сломанной ссылки, потому что этому вопросу 6 лет, и хост, который я использовал, не выжил... вот обновленная версия.


Я нашел проблему. Вы можете создать ассоциацию только в том случае, если родительский класс не имеет поля Nullable в качестве ключа.

Итак, это:

alt текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=43d83ac4-707d-47fc-832c-588261e6a5d7

приведет к ошибке:

alt текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

...но это:

alt текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

будет прекрасно работать.

Это похоже на ошибку (или, по крайней мере, глупость LINQ to SQL)... но мне нравится другое.


У меня сейчас именно такая ситуация в DBML, и она работает нормально.

Первичный Ключ

  • Nullable-False
  • Первичный Ключ-True
  • тип данных сервера-int не NULL IDENTITY
  • Type-int (System.Int32)

Внешний Ключ

  • Nullable-Trure
  • Первичный Ключ-False
  • тип данных сервера-Int
  • Type-int (System.Int32) (фактически определяется как Nullable в контексте.дизайнер.cs файл)