我正在创建一个项目,在该项目中我将使用 ADO.NET 作为数据访问层与数据库进行交互。
现在我很困惑的是:
1)我应该在这个应用程序中有域对象吗?
2) 我的 sql 查询结果是否应该始终与域对象绑定?
3)如果我不使用域对象,那么我是否应该始终从数据访问层返回自定义模型,其中包含我想要在我的 web api 服务中返回的所有内容?
4)如果我使用域模型并且如果有一个场景我想显示来自多个表的数据或像这样的场景,例如:
public class Employee
{
int id;
List<Skills>();
}
我可以在 EF 中轻松做到这一点,但使用 ado.net 和域对象,其结构如下所示,我将如何实现这一点:
public class Employee
{
int id;
}
public class Skill
{
int id;
int EmployeeId;
}
Ofcouse 我可以首先获取员工列表,然后对于每个员工,我可以根据员工 ID 获取技能列表,但这不是很痛苦,我必须为每个员工触发查询以获得其相应的技能,这在 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 作为数据访问层时应该考虑什么架构,如果有人可以帮助我解决上述 4 个问题,我将不胜感激。
注意:我不想使用 ORM(实体框架或 Dapper 等)。
慕容708150
炎炎设计
开心每一天1111
相关分类