У меня есть отношение один-к-одному / нулю, работающее с использованием EF 6. По сути, у меня есть объект LocationItem, который может или не может быть связан с объектом Scale, а объект Scale может или не может быть связан с Объект LocationItem. Таблица LocationItem содержит внешний ключ (называемый ScaleId) для таблицы Scale.
Я использую следующий свободный API в классе LocationItem.
HasOptional(x => x.Scale)
.WithOptionalDependent(x => x.LocationItem)
.Map(x => x.MapKey("ScaleId"));
Затем у меня есть свойство навигации LocationItem в классе Scale и свойство навигации Scale в классе LocaitonItem. Как я уже сказал, все это работает.
У меня проблема в том, что мне нужно включить ScaleId в качестве свойства класса LocationItem. Я попытался добавить поле в POCO
public int? ScaleId { get; set; }
и сопоставьте его в конфигурации
Property(x => x.ScaleId).HasColumnName("ScaleId");
Но если я это сделаю, я получаю следующую ошибку проверки
ScaleId: Name: каждое имя свойства в типе должно быть уникальным. Имя свойства 'ScaleId' уже определено.
Но это нигде не определено, поэтому я не понимаю, откуда исходит ошибка. Как только я прокомментирую эти две строки, ошибка исчезнет.
Причина, по которой мне нужно включить идентификатор масштаба в качестве свойства, заключается в том, что мне иногда нужно запрашивать элементы, которые не имеют масштаба или имеют определенный идентификатор масштаба. Если я сделаю это с помощью свойства навигации Scale (используя LocationItem.Scale.ScaleId) и посмотрю на сгенерированный SQL, я вижу, что он выполняет соединение двух таблиц. Я хочу исключить этот дополнительный ввод-вывод, если это возможно, поскольку вся необходимая информация уже находится в таблице LocationItem.
Короче говоря, мой вопрос - как можно использовать свойство навигации Scale и ScaleId в качестве другого свойства объекта LocationItem при использовании отношения один-к-одному?