MVC asp.net - должен ли уровень доступа к данным быть отделен от моделей предметной области? - PullRequest
1 голос
/ 15 ноября 2011

Если я буду следовать разъединению полностью, может показаться, что слой DataAccess должен быть отделен от моделей. Но затем передача информации на уровень доступа к данным становится громоздкой ... Вместо:

void Save(myModel modelObject) {
//db.Save here
}

Я сделаю

void Save(string objectprop1,objectprop2...) {
}

Разве это не победило бы цель простоты?

Я думаю, что передача модели на уровень доступа к данным - это совершенно чистый код, но при этом он не разделен.

1 Ответ

3 голосов
/ 15 ноября 2011

Ваш уровень доступа к данным обязательно должен знать о ваших моделях доменов.Вы правы, полагая, что разбить их на неисчислимое количество примитивных аргументов было бы очень плохо.

Отключение 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 является серверной реализацией, которая их использует.

...