LINQ to SQL - Nullable INT in ForeignKey = "Невозможно создать ассоциацию ..." - PullRequest
9 голосов
/ 19 ноября 2008

У меня есть таблица с первичным ключом, который является INT ... У меня есть другая таблица, которая имеет отношение внешнего ключа к этой первой таблице, но это NULLABLE INT.

Это совершенно нормально и на 100% приемлемо для SQL ... однако LINQ to SQL жалуется на несовпадающие типы ("int to Nullable [int]").

Сообщение об ошибке: не удается создать ассоциацию «Store_People». Свойства не имеют подходящих типов: "PersonID", "ID".

Как мне решить эту проблему, чтобы дизайнер перестал кричать на 100% правильное использование SQL?

Ответы [ 3 ]

8 голосов
/ 21 ноября 2008

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

Итак, это:

альтернативный текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=43d83ac4-707d-47fc-832c-588261e6a5d7

вызовет эту ошибку:

альтернативный текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

... но это:

альтернативный текст http://www.singingeels.com/Articles/UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

будет отлично работать.

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

3 голосов
/ 20 ноября 2008

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

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

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

Внешний ключ

  • Nullable - Trure
  • Первичный ключ - Ложь
  • Тип данных сервера - Int
  • Тип - int (System.Int32) (фактически определяется как Nullable в файле context.designer.cs)
0 голосов
/ 20 ноября 2008

Вот что я бросил вместе. Столбец Table1Id в Table2 является обнуляемым внешним ключом для Table1. Я даже добавил несколько записей данных и протестировал некоторые запросы Linq ...

enter image description here

РЕДАКТИРОВАТЬ : Поскольку я получаю несколько отрицательных голосов (очевидно) за неработающую ссылку, потому что этому вопросу уже 6 лет, а используемый мной хост не сохранился ... вот обновленная версия.

...