Здравствуйте, grayver, Вы писали:
G>Добрый день!
G>В БД (MS SQL 2008 R2) имеется некий "интерфейсный" слой — набор вьюшек и хранимых процедур, к которым имеет доступ наше приложение. В нашем приложении мы строим модель на базе EF 4.1, которая использует вьюхи из БД. В этой модели есть 2 сущности, для которых реализовано наследование — базовая сущность Tag и дочерняя сущность FinancialGoal. На реляционном уровне — это 2 таблицы с отношением 1 к 1, на уровне вьюх также используется общий ключ TtrId. Согласно инструкциям от MS мы создали одну сущность на базе вьюхи vwTags, потом создали наследуемую сущность на базе второй вьюхи vwGoals, удалили из набора полей сущности FinancialGoal поле TtrId и поставили в маппинге сущности FinancialGoal ключ TtrId базовой сущности Tag. Далее мы замапили соответствующие процедуры на вставку\обновление\удаление сущностей Tag и FinancialGoal. При этом сущность Tag НЕ является абстрактной и весьма автономна. Как родительская, так и дочерняя сущность имеют связи с другими сущностями модели. Поле TtrId у сущности Tag имеет свойство StoreGeneratedPattern=Identity. Все работает хорошо за исключением момента, когда мы пытаемся добавить сущность FinancialGoal. В этом случае возникает ошибка "A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column: 'TtrId'.". Текст ошибки понятен — нам говорят о том, что в ссылочной зависимости внешний ключ является "store-generated column" и им является поле TtrId. Проблема в том, что нигде в модели нет этого внешнего ключа TtrId со свойством "store-generated column". В сущности Tag поле TtrId обладает таким свойством, но оно есть primary key и не является foreign key ни для одной из сущностей. Многочасовое ковыряние в edmx-е результатов не дало.. гугление тоже
Есть подозрение, что ошибка возникает из-за каких-то особенностей реализации наследования в EF.. Но это только подозрение.
G>
G>Заранее спасибо за помощь.
Во-первых, раз уж у Вас есть edmx, то это никакой ни EF 4.1, а обычный EF 4 (В EF 4.1 aka Code First edmx вообще не заводится).
Теперь про FK: у Вас же явно стоит ключ с Tag на Tag (NavParentTag). Возможно, там какой-то глюк залез.
Судя по тому, что пишут в интернете по этому сообщению, у Вас таки где-то ошибка в edmx. Как я понял, суть ошибки в том, что в edmx объявлено свойство, которое является ссылкой (т.е. зависимо), а мапится оно почему-то на Identity колонку, что, конечно, является ошибкой.
Рекомендую Вам продолжить подробное изучение edmx с поиском по ключевому слову "TtrId", либо "edmx в студию".