LINQ to SQL: почему у меня не может быть нулевой ко многим кардинальности - PullRequest
2 голосов
/ 05 января 2010

Я создал отношение внешнего ключа в своей базе данных, чтобы в этом случае я мог получить доступ к другой таблице в качестве свойства House.Area

Теперь, если я создаю Дом объект и Площадь равна нулю, я получаю следующее исключение для SubmitChanges():

Была предпринята попытка устранить связь между Районом и Домом. Однако один из внешних ключей отношения (House.AreaID) не может быть установлен равным нулю.

Хорошо, я сделал приведенный выше пример немного проще, но комментарий ниже заставляет меня думать, что я должен привести лучший пример

В таблице «Дом» имеется столбец с названием «CityID», сопоставляемый с таблицей «Город», соединяющейся по CityID, поскольку FK и CityID не могут быть равны нулю

В таблице «Дом» также имеется столбец, называемый AreaID, который сопоставляется с таблицей «Площадь», соединяющейся по CityID и AreaID, но AreaID может быть нулевым.

В доме всегда должен быть 1 город. В одном городе может быть много домов. Дом может быть в нуле или 1 районе. 1 район может иметь ноль или много домов.

Я обновляю Дом. Город = Новый Город (....); House.CityID получает значение <- проверено </p>

Ошибка обновления

Была предпринята попытка удалить связь между Районом и Домом. Однако один из внешних ключей отношения (House.CityID, House.AreaID) не может быть установлен равным нулю.

Если в обновлении Района не указано значение CityID, которое может объяснить ошибку. Комментарии, пожалуйста. Любой способ обойти?

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Похоже, ваша база данных не позволяет полю быть пустым. Загрузите таблицу House в диспетчере предприятия SQL-сервера (или в любом другом инструменте базы данных, который вы используете) и убедитесь, что в поле AreaID допустимы значения NULL

0 голосов
/ 05 января 2010

Я согласен с ответом Ориона. Это сообщение не об ошибке LINQ, а об ошибке поставщика базы данных. Помните, что LINQ - это просто слой языка запросов поверх бэкэнд-провайдера.

0 голосов
/ 05 января 2010
       / \_
      /   \|
     /     \
    /       \
    ---------
    | house |
    ---------

Поэтому дом должен содержать площадь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...