Как передавать изображения (или любой большой двоичный объект) в OData Service с помощью Code First? - PullRequest
1 голос
/ 22 июля 2011

То, что я пытаюсь сделать, это: иметь клиентский объект или объект продукта, передающий связанные изображения, и иметь возможность загружать / обновлять изображения с использованием службы OData.

с использованием EF 4.1 и 'CODEМодель FIRST на стороне клиента - приложение WPF

Пока у меня есть рабочий сервис для модели данных, я могу читать, обновлять свои данные, все хорошо.

Для того, чтобы включить изображениеПотоковое, я следовал за Glenn Gailey BLog, «Пример службы OData потокового фото» здесь: http://code.msdn.microsoft.com/Streaming-Photo-OData-7feb9239

Поскольку в примере используется файл edmx, я добавил второй сервис только для изображений, с небольшими изменениями в порядкесвязать изображение с клиентом / продуктом в моей модели данных.Так что теперь приложение загружает связанные изображения в виде потока из второго сервиса.(Я не могу заставить «загрузить / добавить» новое изображение для работы, но это сейчас не важно).

Для того, чтобы включить возможность потоковой передачи, а затем именованный поток, нужно иметьвручную отредактировать файл .edmx и добавить свойство "hasStream = true".Затем внедрите IDataServiceStreamProvider и т. Д.

Длинная история, короткий вопрос

Я хотел бы иметь возможность сделать это в рамках моей существующей модели, вместо того, чтобы иметь второй сервис с собственной моделью.Как (и где) мне добавить это свойство hasStream в Code First ???

В качестве альтернативы, я перехожу за борт и есть более простая процедура для работы с изображениями в OData?
PS: изображения довольно малы по размеру, в основном <200 КБ с несколькими до 1 МБ </p>

Оцените любую помощь, указатели, примеры

Спасибо

Андреас

1 Ответ

1 голос
/ 23 июля 2011

Нет, я не думаю, что это возможно.Это HasStream является пользовательской структурной аннотацией.Это не особенность структуры Entity, а дополнительные метаданные, считываемые службами данных WCF.Модель Code First не поддерживает эти пользовательские аннотации.Более того, службы данных WCF (кроме CTP) напрямую не поддерживают контекст кода вначале.

Редактировать:

Я просто провел небольшое исследование.В сборке System.Data.Services.Client есть атрибут System.Data.Services.Common.HasStreamAttribute.Попробуйте пометить свой код первым объектом с этим атрибутом.Если вы используете поставщика отражений, он должен работать.

...