Вариант 2 здесь лучше для инкапсуляции, хотя и увеличивает сложность. Словарь - это деталь реализации, которой не должны заниматься ваши верхние уровни. Вместо этого ваш уровень доступа к данным должен предоставлять классы, которые представляют фактические таблицы - например, у вас может быть класс Person
или класс Inventory
. В качестве классов DAL они будут предоставлять методы для добавления, удаления, обновления, извлечения и т. Д. В зависимости от ситуации.
Далее у вас будет доменный слой, который работает со строкой, извлеченной из ваших классов DAL, которая добавляет бизнес-методы (например, Order
может быть создан Person
и влияет на Inventory
- акт вызов методов для этих классов домена сводится к DAL для фактического прикосновения к базовым данным).