Как создать оболочку для сущностей OData-Feed? - PullRequest
0 голосов
/ 24 ноября 2011

ERP-решение для клиентов имеет (imho) действительно ужасную структуру базы данных.Он не использует выразительные имена ни для таблиц, ни для столбцов.Например, таблица адресов выглядит следующим образом:

C001_T001
=========
T001_ID
T001_F001
T001_F002
T001_F003
[...]
  • T001_ID является первичным ключом
  • T001_F001 хранит заголовок
  • T001_F002 хранит фамилию
  • T001_F003 хранит имя кулака
  • T001_F003 хранит адрес электронной почты
  • ... вы получаете точку

База данных предоставляет OData-Feed,который я могу использовать для выполнения операций с базой данных.

Моя идея состоит в том, чтобы создать вокруг него своего рода оболочку.Так что запрос к базе данных будет немного более выразительным, увлекательным и, в конечном итоге, более продуктивным.

// Not cool
ctx.C001_T001s.Where(x => x.T001_F002 == "Smith" && x.T001_F003 == "John")

// Cool!
Addresses.Where(x => x.LastName == "Smith" && x.FirstName == "John")

Каковы возможные подходы для достижения этой цели?

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Если сервис, который предоставляет OData, основан на EF, то это должно быть очень просто сделать в EF, в модели вы можете переименовать свойства и сущности (по сравнению со столбцами и таблицами, в которые он отображается).Затем OData заберет имена из EF.

1 голос
/ 24 ноября 2011

SImlpe.Я делаю это все время.

  • Я открываю для них определенные сущности через Odata.
  • У меня есть менеджер данных, где я делаю SELECT (new entntiy {} - я в основном проектируюuinto новые сущности
  • Я делаю где ПОСЛЕ проекции.

По крайней мере BlToolkit (мой ORM в этом месте) достаточно умен, чтобы вставить предложение where в оператор SQL,так что я получаю эффективный поиск и хорошие прогнозы.

...