Это отношение не может быть отображено с EF, и оно даже не работает в базе данных.
Вы говорите, что SIM-корзина может существовать без устройства. Это нормально, но вы также говорите, что устройство может существовать без SIM-карты, и вы все еще хотите ссылочную целостность и взаимно-однозначное отношение. Что это значит?
Это означает, что таблица устройств должна иметь:
- FK столбец к SIM-карте (отношение)
- Столбец FK должен иметь значение NULL (устройство может существовать без SIM-карты)
- Столбец FK должен иметь уникальный индекс (сим-карту можно назначить только одному устройству)
Первая проблема в базе данных. Если вы поместите уникальный индекс в обнуляемый столбец, вы получите неожиданный результат - нулевое значение рассматривается как значение, и только одной записи может быть назначено нулевое значение, иначе это нарушит уникальное ограничение =>, что означает, что вы можете иметь только одно устройство без сим-карты.
Вторая проблема в EF. EF не поддерживает уникальные ключи, поэтому не видит отношения один-к-одному (и не будет создавать для вас индекс). Единственная возможность использовать реальное взаимно-однозначное отношение в EF - это поместить FK на PK устройства = устройство будет иметь то же значение PK, что и SIM-карта, но в этом случае вы не можете иметь устройство без SIM-карты.