Entity Framework - Создание строго типизированной проекции в дизайнере - PullRequest
2 голосов
/ 19 апреля 2011

Я пытаюсь создать строго типизированный объект проекции «ProjectedPersons» через конструктор в Entity Framework.

Я использую классы POCO и разделил их на отдельные проекты.

Я получаю сообщение об ошибке:

ошибка 3027: не указано сопоставление для следующего EntitySet / AssociationSet - ProjectedPersons.

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

Спасибо

Ответы [ 3 ]

0 голосов
/ 19 апреля 2011

Если вы хотите определить проекцию в конструкторе, вы должны использовать QueryView (запрос проекции, определенный непосредственно в конструкторе и сопоставленный с новой сущностью только для чтения) - это функция, которая должна быть определена вручную непосредственно в XML (Часть MSL) не в дизайнере. В противном случае вы должны выполнить проекцию вручную в запросе Linq. Для запроса linq вам не нужно создавать сущность в конструкторе. Вы можете использовать любой класс, который не отображается в конструкторе.

0 голосов
/ 20 апреля 2011

QueryView был решением.Я нашел полезный пример.

http://msdn.microsoft.com/en-us/magazine/ee336312.aspx

0 голосов
/ 19 апреля 2011

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

...