Ваш уровень доступа к данным обязательно должен знать о ваших моделях доменов.Вы правы, полагая, что разбить их на неисчислимое количество примитивных аргументов было бы очень плохо.
Отключение DAL не означает удаление зависимости моделей из DAL, а скорееустранение зависимости DAL от моделей.DAL может быть представлен, например, простыми репозиториями:
interface Repository<TModel> where TModel : BaseModel
{
TModel Get(int id);
IEnumerable<Tmodel> Get();
void Delete(int id);
TModel Save(TModel model);
}
или что-то в этом роде, есть много способов его спроектировать.Идея заключается в том, что DAL может хранить вещи в другой структуре, нежели модели.Но с точки зрения моделей, они просто сохраняются в репозитории.Фактическое постоянство данных может быть другой структурой таблиц (например, оптимизировать производительность базы данных без необходимости менять бизнес-модели в качестве побочного эффекта) или даже в нескольких базах данных целиком.DAL, зная о моделях доменов.Действительно, как часть домена, DAL должен знать об этом.Модели являются центральными, DAL является серверной реализацией, которая их использует.