В каких сценариях я хотел бы создать пользовательские бизнес-объекты из FINQ к результатам SQL?
-
01-10-2019 - |
Вопрос
Простой запрос LINQ для SQL может вернуть объект продукта. Образуется, я мог бы передать этот объект к моим бизнесу, а затем прочитать и обновлять данные, непосредственно против этого объекта.
Я видел кучу реализаций, в которых после выполнения запроса LINQ Результирующий объект отображается (через Automapper или вручную) на пользовательский бизнес-объект. Таким образом, в случае продукта, где у меня может быть объект LINQ:
Product.Productid и Product.ProductName.
И тогда я бы определил таможенный продукт бизнес-объект, как так:
class BusineszProduct
{
string ProductId;
string ProductName;
}
и какой-то простой сопоставленный код, как:
БизнесПродукты MyProduct = новый бизнесПродукт (); MyProduct.ProductiD = Product.ProductiD; MyProduct.ProductName = Product.ProductName;
И затем пропустите MyProduct вокруг моего бизнес-слоя, измените его, прочитайте его и так далее, затем позже обновите объект LINQ.
В каких сценариях я хотел бы создать пользовательский класс предпринимамости?
Решение
ИМХО, общая причина заключается в том, чтобы отделить / разоблачить ваши субъекты бизнеса из багажа Linq2SQL ORM, который поставляется с объектами Linq2SQL
Однако в экстремальном сценарии у вас могут быть несколько сопоставлений:
- Линейные объекты Linq2SQL для слоя «Доступ к данным» - однако они тесно связаны с DataContext L2S
- POCOS / Бизнес-объекты будут использованы для приложения бизнес-правила, валидации и т. Д.
- Если вы используете веб-сервисы или WCF, вы также можете представить данные в качестве путей сообщения, например, если вам нужно представить объекты в очень специфическом формате, когда они сериализуются через провод
- И, наконец, если у вас есть архитектура MVC / MVP / MVVM-пользовательского интерфейса, вы могли бы захотеть объекты, адаптированные для ваших представлений
Другие советы
В моем приложении я делаю запрос LINQ, который соединяет шесть разных таблиц и обеспечивает пару столбцов из каждого. Там нет конкретного типа объекта, который соответствует этому набору информации. Следовательно, я создаю пользовательский бизнес-класс для обработки набора записи.
Вы можете просмотреть его самостоятельно (в http://www.njtheater.org.)
Я выбираю из Productions
Стол по дате. Он присоединяется к игровой таблице (где я получаю титул и описание), таблица труппы (где я получаю название компании театра), таблицу площадок (где я получаю название и город театра). Таблица Plays соединяется с таблицей PlayCredits, которая присоединяется к таблице людей (где я получаю имена PhayWrights)