0

У меня есть приложение, которое использует классы Entity Framework 5 и POCO с использованием подхода, основанного на кодах.Entity Framework 5 с архитектурой n-уровня

Таким образом, у меня есть каждая таблица базы данных, смоделированная в классе Poco, так что я могу лучше контролировать модель (вместо материалов EDMX).

Приложение работает нормально, но теперь я хочу добавить слой WCF, поэтому он работает под n-уровневой архитектурой.

Каков наилучший способ сделать это?

Я знаком с WCF, но с возвращаемыми наборами данных ADO.NET. Я читал, что для лучшей производительности вы можете вернуть JSON вместо XML, поэтому мне хотелось бы узнать от экспертов, если есть какой-либо пример, на котором я могу посмотреть, как реализовать слой WCF с помощью Entity Framework, который возвращает объекты JSON клиенту и наоборот.

Спасибо и оцените любой путеводитель.

ответ

1

Нет таких изменений, если вы создадите свой собственный класс или используете классы инфраструктуры сущностей. Только вы должны поместить [DataContract] над классом, который должен быть сериализован, и [DataMember], который должен быть сериализован в службе.

Для примера.

[DataContract] 
public class Test 
{ 
    [DataMember] 
    public string field1 {get; set;} 

    [DataMember] 
    public string field2 {get; set;} 
} 

И создать WCF сервис вам просто нужно поставить код ниже:

это будет в интерфейсе сервиса, и вы просто необходимо реализовать в классе.

[OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    List<test> GetTest(); 

Я надеюсь, что это вам поможет. :)

+0

Спасибо, так что у меня может быть отдельный проект. Моделями и ссылкой на мой клиент и в моем проекте службы WCF и просто добавьте datacontract и datamember в каждое свойство, которое будет сериализовано правильно? – VAAA

+0

Отлично работает. Теперь у меня есть проблема при вызове метода WCF на клиенте у меня есть: Model.User user = clientWCF.ValidateUser («test», «test»); Если я запустил это, я получаю сообщение об ошибке, потому что тип объекта User отличается от Model.User и является странным, потому что ссылается на одну и ту же модель. Если я использую: var user = clientWCF.ValidateUser («test», «test»); Я вижу, что внутри. – VAAA

+0

Можете ли вы поделиться кодом службы, а также поделиться с ним model.user. Чтобы я мог исправить эту проблему. :) –

Смежные вопросы