Обнуляемые отношения один-к-одному с целочисленными ключами в LINQ-to-SQL - PullRequest
4 голосов
/ 01 июня 2010

У меня есть два объекта (Foo и Bar), которые имеют отношение один к нулю или один между ними. Таким образом, Foo имеет недействительную ссылку на внешний ключ на Bar.ID и уникальный индекс ( nullbusted ) для обеспечения стороны «1». Bar.ID - это int, и поэтому Foo.BarID - это обнуляемый int.

Проблема возникает при сопоставлении LINQ-to-SQL DBML типов .NET с типами данных SQL. Поскольку int не является типом NULL в .NET, он помещается в Nullable<int>. Однако это не тот тип, что и int, поэтому Visual Studio выдает мне это сообщение об ошибке при попытке создать связь OneToOne между ними:

Невозможно создать ассоциацию "Bar_Foo". Свойства не имеют совпадающих типов: «ID», «BarID».

Есть ли способ обойти это?

1 Ответ

2 голосов
/ 01 июня 2010

До сих пор я обходил это, устанавливая Bar.ID (первичный ключ) в CanBeNull="true", что, безусловно, ужасно. Я надеюсь на лучшее решение здесь.

...