Ошибка 6017: NavigationProperty '(имя свойства)' типа '(имя типа)' является источником - PullRequest
0 голосов
/ 25 сентября 2011

Error 6017: The NavigationProperty '(propertyname)' on the type '(typename)' is the source of a generated property '(otherpropertyname)' which conflicts with a member of the same name.

ОК, я вполне уверен, что понимаю, почему я получаю это сообщение об ошибке, но мне не очевидно, как его обойти.

Iиметь таблицу salesreps, которая ссылается на таблицу territories с простым отношением внешнего ключа.Таблица territories обновляется с помощью автоматического канала, а таблица salesreps поддерживается вручную через веб-интерфейс, который я разрабатываю.

Я не хочу, чтобы повторы были удалены, если территория исчезнет;Я намереваюсь выделить их для ручных корректирующих действий в пользовательском интерфейсе, который я создаю, поскольку осиротевшие представители нуждаются в присвоении территории.

Торговые представители определяются идентификатором, который уникален только для данной территории (я ничего не могу сделатьоб этом, вне моего контроля), если территория удалена, я сделал поведение внешнего ключа ON DELETE, установив значение territoryID в ноль, и сделал столбец обнуляемым.Затем я создал вычисляемый столбец с именем territoryReferenceID в таблице salesreps, установленной на isnull(territoryID, 0), сделал его постоянным и создал первичный ключ на основе столбцов repID и territoryReferenceID, поскольку я не могу сделать обнуляемымКолонка ПК (которую я до сих пор считаю хромой, даже если я понимаю, почему это так).В базе данных это работает нормально, и если каким-то образом две территории удаляются с одинаковым repID одновременно (крайне маловероятно), я в порядке с ошибкой нарушения первичного ключа, которую я могу перехватить.

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

Как я могу исправить эту проблему?

1 Ответ

0 голосов
/ 26 сентября 2011

Вот что я в итоге сделал:

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

Итак, я сделал просмотр данных только с одним столбцом territoryID (ссылающимся на вычисляемый столбец) и создал хранимые процедуры для создания, изменения и удаления записей из представления.

Это работает. Это уродливо, но это то, что я получаю за попытку "сэкономить время" с EF.

...