Entity Framework - результат хранимой процедуры в виде объекта без первичного ключа - PullRequest
3 голосов
/ 14 июля 2011

Пожалуйста, прости меня, если на этот вопрос уже был задан вопрос. Если так, пожалуйста, укажите мне на это. Я использую VS2010 поверх .Net 3.5 (обновление платформы не в моем распоряжении) с последними пакетами обновлений.

У меня есть сохраненный процесс, который будет возвращать строки, подобные следующим. Нет другого столбца, который мог бы функционировать как Ключ для этой сущности; результаты выглядят так:

COUNTRYCODE     QUANTITY
USA             100
UK              250
USA             300
USA             190

и так далее.

Я следовал инструкциям http://blogs.microsoft.co.il/blogs/gilf/archive/2009/03/13/mapping-stored-procedure-results-to-a-custom-entity-in-entity-framework.aspx

, а также http://msdn.microsoft.com/en-us/library/cc982038(v=VS.90).aspx

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

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

1 Ответ

4 голосов
/ 14 июля 2011

Если вам не нужен первичный ключ, то я предполагаю, что у вас нет требования, чтобы иметь возможность изменить эти данные и отправить их обратно на сервер.В этом случае вы должны использовать сложный тип вместо типа сущности.Сложные типы являются классами и могут служить в качестве DTO так же, как и сущности, но вы не можете использовать сложные типы в качестве базовых объектов Вставка / Обновление / Удаление.

РЕДАКТИРОВАТЬ: Похоже, чтосложные типы могут не использоваться в EFv1 (.NET 3.5), кроме как для группировки скалярных свойств по типам сущностей.К сожалению, EFv1 значительно уступает EFv4, и может просто не быть решения вашей проблемы, связанного с использованием Entity Framework.

...