Службы данных WCF без использования Entity Framework - PullRequest
4 голосов
/ 15 ноября 2011

Я хочу предоставить устаревший код .net через службы данных WCF. Но без использования Entity Framework в любом месте. По сути, в настоящее время я заполняю все свои модели из базы данных один раз каждые X часов и помещаю эти модели в кэш. Текущие веб-сервисы извлекают всю информацию из этого кэша. Теперь мне нужно преобразовать все это в службы данных WCF, прежде всего для поддержки протокола OData.

Какой самый простой и быстрый выход (опять же, нет структуры сущностей)

Ниже приведен пример того, как выглядит моя модель:

public class Country
{
    public string CountryCode {get; set;}
    public string CountryName {get; set;}
    public List<State> ListOfStates {get; set;}
}

public class State
{
    public string StateCode {get; set;}
    public string StateName {get; set;}
}

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Вам нужно использовать поставщик отражения вместо поставщика платформы Entity - пользовательский класс контекста, предоставляемый в службе данных WCF. Просто учтите, что поставщик отражений по умолчанию предоставляет доступ только для чтения данных. Если вам необходимо обновить данные через службу OData, вам также потребуется реализовать интерфейс IUpdateble в вашем классе контекста.

2 голосов
/ 15 ноября 2011

Это не чёрная магия, но немного работы.

См. Эту статью Расширенные темы служб данных WCF , в которой показано, как можно использовать, например, Subsonic для ORM.

По сути, необходимо выполнить следующие шаги:

  • вам нужно выставить IQueryable<T> коллекций для всех ваших классов - вы могли бы сделать это, имея некоторый класс DataModel или DataContext, которыйсодержит все эти коллекции

Если вы хотите иметь возможность вставлять и обновлять данные, вам также необходимо:

  • для реализации интерфейса IUpdatable в вашем "контексте данных«включить отслеживание изменений и обработку операций CUD
1 голос
/ 15 ноября 2011

Я не хочу рекламировать себя на самом деле, но ваша проблема в той же ситуации, что и у нас на работе. Мы взяли на вооружение оригинальный инструментарий, разработанный Джонатаном Картером, для сопоставления WCF DataServices с тем, что вам нужно.

Попробуйте взглянуть на http://wcfdstoolkit.codeplex.com/ и посмотрите, решит ли это вашу проблему. Документация доступна через ссылки на блог Джонатана о том, как установить и использовать инструментарий. Но я рекомендую скачать сентябрьскую ветку релиза, чтобы убедиться, что в ней есть все исправленные ошибки, которые я уже исправил.

...