RIA не генерирует контексты для нескольких доменных служб - PullRequest
0 голосов
/ 18 октября 2011

Framework: .NET 4, Entity Framework 4, Silverlight 4, службы RIA

Я пытаюсь разделить мою модель Entity Framework на два класса обслуживания домена. Модель не сложная - несколько таблиц. Итак, я создал единую модель Entity Framework.

Я хотел бы создать два класса обслуживания домена, каждый из которых получает доступ к подмножеству полной модели EF. Сначала я создаю отдельный класс обслуживания домена. RIA генерирует DomainContext в приложении SL4 на основе доменной службы. Однако, когда я добавляю второй класс доменной службы, RIA не генерирует ни один из контекстов домена (поэтому я не могу использовать даже первый).

(Примечание. Обе доменные службы имеют атрибут EnableClientAccess и оба имеют как минимум один запрос.)

Почему контексты не генерируются и как это можно решить? Я что-то пропустил? Может ли RIA генерировать контексты для двух разных доменных служб, которые используют одну и ту же модель структуры объекта?

Ответы [ 3 ]

0 голосов
/ 18 октября 2011

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

0 голосов
/ 29 октября 2011

Да, из того, что я видел, на самом деле нет супер простого способа заставить его работать ... Обычно я просто помещаю все это в одну доменную службу из-за этого: - / Не идеально, но, может быть, это изменится в релиз или около того ... В противном случае я просто создаю конкретные DTO для каждой реализации службы домена и использую их: - /

Вот несколько других советов, которые могут помочь

http://forums.silverlight.net/t/146340.aspx/1

http://forums.silverlight.net/t/111058.aspx/1

В противном случае, я думаю, что единственный способ сделать это - создать две разные модели EF для подмножества данных, которые вы представляете в разных сборках, и представить их таким образом.

0 голосов
/ 18 октября 2011

Кажется, что ваша сущность раскрыта 2 DomainService, например, у вас есть имя сущности Company, и у вас есть метод, который возвращает Company в обеих ваших доменных службах:

public class DomainServiceA
{
    public IQueryable<Company> MethodA() { .. }
}

public class DomainServiceB
{
    public IQueryable<Company> MethodB() { .. }
}
...