В настоящее время я представляю свой бизнес-уровень и уровень данных в одном проекте в своем приложении. У меня очень хорошее разделение проблем между двумя наборами классов. Однако классы My Data Layer принимают в качестве параметров и возвращают мои бизнес-объекты. Так что я буду иметь код, который свободно походит (пожалуйста, не быть слишком критичен этого кода, мой код продукции не выглядит так же, как это):Как я могу полностью отделить свой бизнес и слои данных?
//business class fragment
public bool Save()
{
if(this.IsValid)
{
//DataProvider is one of many data access classes that implement an IDataProvider interface. Switched elsewhere in the class. This allows switching of Database providers, xml, etc.
DataProvider.Save(this);
return true;
}
return false;
}
public List<MyBusinessObject> GetObjectsByCriteria(string criteria)
{
return DataProvider.GetMyBusinessObjectsByCriteria(criteria);
}
Я не хочу, чтобы мои бизнес-классы должны иметь дело с DataSets больше, чем мне нравится, когда мои классы Data Layer занимаются бизнес-классами.
Я много читал о объектах доступа к данным или объектах передачи данных, чтобы решить эту проблему, но это похоже на анти-шаблонный шаблон для этих шаблонов.
Что я могу сделать? Как мне элегантно достичь полного разделения этих двух слоев моего приложения?
Это то, что мы делаем, но мы также объединяем его с DTO. –