Я создаю проект, в котором я буду использовать ADO.NET в качестве слоя доступа к данным для взаимодействия с базой данных.
Теперь вещь, в которой я сильно запутался, связана с:
1) Должен ли я иметь доменные объекты в этом приложении?
2) Всегда ли мой результат запроса sql должен быть связан с доменными объектами ?
3) Если я не использую доменобъекты, тогда я всегда буду возвращать пользовательские модели из уровня доступа к данным, которые имеют все, что я хочу вернуть в моем веб-API-сервисе?
4) Если я использую модели домена и если есть сценарий, в котором я хочу отобразить данные из нескольких таблиц или сценарий, например, такой как:
public class Employee
{
int id;
List<Skills>();
}
Я могу легко сделать это в EF, но с ado.net и с объектом домена, который будету меня есть такая структура, как показано ниже:
public class Employee
{
int id;
}
public class Skill
{
int id;
int EmployeeId;
}
Конечно, я могу сначала получить список сотрудников, а затем для каждого сотрудника я могу получить список навыков на основе идентификатора сотрудника, но разве это не будет болезненноti придется запускать запрос для каждого сотрудника, чтобы получить соответствующие навыки, что довольно просто в EF на основе свойства навигации и позволяет избежать накладных расходов, как показано ниже:
var employees = //get listof employee in this case domain model
List<Employee>
var employeeModel = new List<EmployeeModel>();
foreach(var employee in employees)
{
EmployeeModel model = new EmployeeModel();
model.id = employee.id;
var skills = GetSkill(employee.id);//Get list of skills in this case
domain model List<Skill>;
employeeModel.Skills = new List<SkillModel>();
foreach(var skill in skills)
{
SkillModel sm = new SkillModel();
sm.Id = skill.Id;
employeeModel.Skills.Add(smm);
}
employeeModel.Add(model);
}
Наконец, эта модель EmployeeModel будет возвращена в качестве ответа в моемСервис Web Api, следовательно, этот EmployeeModel будет содержать только те свойства, которые я верну в моей конечной точке WebApi.
Какой должна быть архитектура, рассматриваемая при работе с ado.net в качестве слоя доступа к данным, и я буду очень признателенесли кто-то может помочь мне решить вышеуказанные проблемы.
Примечание: Я не хочу использовать ORM (Entity Framework или Dapper и т. д.).