Вызов другой службы данных WCF из службы RIA WCF с использованием Entity Framework - PullRequest
4 голосов
/ 24 октября 2011

Я хотел бы использовать службы WCF RIA для доступа к данным из моего приложения Silverlight. Однако данные предоставляются не из локального хранилища данных, а из другой службы данных WCF (я обращаюсь к внешней системе CRM). Я не хочу получать доступ к внешней службе напрямую, потому что мне приходится собирать данные из нескольких источников данных в моей службе RIA.

Возможно ли это, что было бы самым простым способом достичь этого? Хотелось бы получить исходный код на C #.

EDIT: Основная проблема заключается в том, как легко заполнить объект из внешнего сервиса. Есть связанный вопрос , но ответ не решает мою проблему.

1 Ответ

2 голосов
/ 31 октября 2011

Я думаю, что вы путаетесь в том, что мастер Visual Studio для добавления службы RIA предполагает, что вы будете использовать EntityFramework для своих данных. Я не думаю, что вы хотите создать модель EF из данных второго сервиса WCF. Вместо этого создайте службу RIA, чтобы получать ее непосредственно из DomainService и переопределить нужные вам методы. В каждом методе запроса просто запросите удаленную службу и верните результат клиенту Silverlight. Чтобы генерация магического кода служб RIA работала, вам необходимо определить набор объектов DTO в вашем приложении, которые обернут результаты из удаленной службы WCF.

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

namespace YourApp.Web 
{ 
    [EnableClientAccess] 
    public class WcfRelayDomainService : DomainService 
    { 
        public IQueryable<Restaurant> GetRestaurants() 
        { 
            // You should create a method that wraps your WCF call
            // and returns the result as IQueryable;
            IQueryable<MyDto> mydtos = RemoteWCF.QueryMethod().ToQueryable();
            return mydtos; 
        } 
        public void UpdateDTO(MyDto dto) 
        { 
            // For update or delete, wrap the calls to the remote
            // service in your RIA services like this.
            RemoteWCF.UpdateMethod(dto);
        }
    }
}

Надеюсь, это поможет вам! См. Как настроить службы RIA с Silverlight 4.0 и без EF , чтобы получить дополнительные советы.

...