В каких случаях я хотел бы создавать собственные бизнес-объекты из результатов Linq в Sql? - PullRequest
1 голос
/ 26 августа 2010

Простой запрос linq to SQL Может вернуть объект продукта. Разумеется, я мог бы передать этот объект своему бизнес-уровню, а затем прочитать и обновить данные непосредственно для этого объекта.

Я видел множество реализаций, в которых после выполнения запроса linq результирующий объект отображается (через автоматическое преобразование или вручную) в пользовательский бизнес-объект. Так что в случае продукта, где у меня может быть объект linq:

product.ProductId а также Product.ProductName

и тогда я бы определил собственный бизнес-объект Product следующим образом:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

и некоторый простой код сопоставления, например:

BusinessProduct myProduct = new BusinessProduct (); myProduct.ProductId = product.ProductId; myProduct.ProductName = product.ProductName;

, а затем передайте myProduct вокруг моего бизнес-уровня, измените его, прочитайте и т. Д., А затем обновите объект linq.

В каких случаях я бы хотел создать пользовательский класс BusinessProduct?

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

ИМХО, общая причина состоит в том, чтобы отделить / распутать ваши бизнес-объекты от багажа Linq2SQL ORM, который поставляется с объектами Linq2SQL

Однако в экстремальном сценарии вы можете иметь несколько отображений:

  • Объекты Linq2SQL для уровня «Доступ к данным», однако они тесно связаны с L2S DataContext
  • POCO / бизнес-объекты будут использоваться для применения бизнес-правил, проверки и т. Д.
  • Есливы используете веб-сервисы или WCF, вы также можете представлять данные как объекты сообщений, например, если вам нужно представить объекты в очень специфическом формате, когда они сериализуются по проводам
  • И, наконец, если у вас естьАрхитектура пользовательского интерфейса MVC / MVP / MVVM, возможно, вы захотите, чтобы объекты настраивались для ваших представлений
0 голосов
/ 26 августа 2010

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

Вы можете просмотреть его самостоятельно (в http://www.njtheater.org)

я выбираю из таблицы Productions по дате. Он присоединяется кТаблица Play (где я получаю название и описание), таблица Troupes (где я получаю название театральной компании), таблица Venues (где я получаю название театра и город). Таблица Plays присоединяется к таблице PlayCredits, которая присоединяется кСтол людей (где я получаю имена драматургов)

...