Представление объектов вне сборки
-
19-09-2019 - |
Вопрос
Я ищу мнения о лучших методах передачи сущностей за пределы сборки.Я использую Linq-To-SQL, но тот же вопрос применим к Entity Framework, NHibernate и т. д.
У меня есть сборка, которую я хочу повторно использовать в нескольких проектах.В нем есть несколько сущностей, которые я до сих пор сохранял внутренними, однако я считаю, что было бы полезно вернуть список сущностей вызывающему абоненту.Должен ли я создать новый класс для инкапсуляции данных или просто раскрыть сам объект.
Например, предположим, что у меня есть сущность «Адрес».Было бы лучше иметь метод GetAddress(...), который возвращает объект Address, или мне следует создать другой класс с теми же свойствами, чтобы предоставить данные адреса?
Спасибо!
Решение
Один голос за разоблачение сущностей.На практике причины сокрытия объектов за DTO в конечном итоге оказываются неактуальными.Например, когда вы в последний раз отключали свой внутренний уровень доступа к данным ради чего-то совершенно другого, что могло бы привести к потере автоматически созданных классов сущностей?
Кроме того, вы экономите время, избегая болезненных действий по сопоставлению, которые возникают, когда вы предоставляете доступ только к DTO.По моему мнению, наличие инструмента автоматического картографирования, который использует отражение или что-то в этом роде, не считается проблемой, потому что теперь вы платите за производительность то, что в противном случае платили бы за утомление.
Другие советы
Возможно, вы захотите рассмотреть возможность использования репозитория для предоставления объектов внешним сборкам. Здесь — отличная статья CodeProject об универсальном репозитории, который можно использовать с EF.