L2Entities, хранимая процедура и отображение - PullRequest
1 голос
/ 16 апреля 2009

Наконец-то проверил среду L2E и почти мгновенно столкнулся с проблемами.
Да, я знаю ... я должен прочитать некоторые книги раньше.

Ситуация:

сущность с реквизитом -> идентификатор и имя.
сущность сопоставляется с таблицей, в которой есть столбцы id и name.
sproc, который возвращает ТОЛЬКО идентификатор столбца.

Проблема:

ObjectResult<MyProp> result = _container.MyStoredProcedure(uberParameter);

Вызов этого вызовет ошибку

[виновный метод идет сюда] бросил исключение: System.Data.EntityCommandExecutionException: средство чтения данных несовместимо с указанным «DataBase.MyPropTableObject». Элемент типа 'name' не имеет соответствующего столбца в считывателе данных с таким же именем.

Задача № 2:

Не может "просто вернуть" это поле, поскольку этот столбец имеет тип данных XML, но sproc использует причудливые операторы select, что приводит к:

Сообщение 421, уровень 16, состояние 1, строка 1 Тип данных xml нельзя выбрать как DISTINCT, поскольку он не сопоставим.

Вопрос:
Возможно ли отключить отображение исключительно для этой сущности, только для этого одного спрока?

1 Ответ

1 голос
/ 16 апреля 2009

Проблема 1 связана с тем, что у процедуры нет столбцов для заполнения сущности. Вам не нужен процесс, если вы отобразили таблицу, просто выберите нужное поле с помощью linq

var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name;

Даст вам значение из столбца Имя таблицы для данного идентификатора. Вам не нужно использовать сохраненный процесс для этого.

Проблема 2 звучит так, как будто это в процедуре, я думаю, что различные данные в столбце xml данных дадут много результатов, но я только догадываюсь, поскольку не знаю вашего решения.

Это не прямой ответ на ваш вопрос, но, надеюсь, он укажет вам правильное направление.

...