EF4: нет свойства с именем «CountryId», определенного в типе, указанном ролью «Клиент».

В моей базе данных (SQL2008) у меня есть таблица клиентов и таблица стран (среди прочего), и в базе данных между этими таблицами определено отношение внешнего ключа на основе «Country.Id -> Customer.CountryId».

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

После создания модели я выбрал ряд свойств в объекте «Клиент», щелкнул правой кнопкой мыши и выбрал «Рефакторинг в новый сложный тип», который я назвал «Адрес». Одним из свойств, которые я выбрал, было свойство CountryId (на самом деле это были все свойства адреса, но я сомневаюсь, что это имеет значение).

Теперь, когда я сохраняю модель, я получаю сообщение об ошибке, показанное выше: «Нет свойства с именем« CountryId », определенным в типе, указанном ролью «Клиент»». Я знаю, что сломал его, но я не могу понять, как его починить снова. Я могу сказать вам, что свойство навигации «Страна» остается в объекте «Клиент» (вероятно, его следовало включить и в объект «Адрес», но я не вижу, как добавить это теперь, когда я создал сложный тип.

Я приветствую ваши предложения!


person Martin Robins    schedule 10.02.2010    source источник


Ответы (1)


Мое предложение: создайте новую модель, сопоставьте ее «правильно», затем скопируйте соответствующие биты CSDL и MSL в существующую модель. Может потребоваться несколько попыток, чтобы сделать это правильно, поэтому сначала сделайте резервную копию!

person Craig Stuntz    schedule 10.02.2010
comment
Спасибо. В данный момент я нахожусь на таком раннем этапе, что начать с нуля не проблема. Что я действительно хочу знать, так это то, как добиться сопоставления в моем свойстве адреса - я все еще хочу иметь возможность извлекать адрес в свой собственный класс, и я хочу, чтобы страна была частью этого. - person Martin Robins; 11.02.2010
comment
Сложные свойства не могут содержать сущности. Так что либо вам нужно использовать скаляр, либо вы не можете его отобразить. - person Craig Stuntz; 11.02.2010
comment
Это то, что я надеялся не здесь. Типа побеждает объект в моем уме на самом деле; тем более, что почти все примеры, которые я видел, были сосредоточены на адресах - я бы подумал, что это очень распространенное требование. - person Martin Robins; 11.02.2010
comment
Ну да, и я не говорю, что согласен с ограничением; только объясняя факты. - person Craig Stuntz; 11.02.2010