我正在开发一个使用现有数据库的应用程序,该数据库只能通过Stored Procs访问。这些SP中的大多数都从多个表中返回列。
我们有一个数据访问层,它从我们的域对象层返回类型的对象。但是,由于SP从多个表返回列,我不确定如何构造我的域对象,因为它们中的大多数都不会“自然地”映射到从SP返回的数据。
实施例:
Stored Proc从“Employee”表和“Manager”表中返回列:
-EmployeeId
-FirstName
-LastName
-ManagerEmployeeId
-ManagerFirstName
-ManagerLastName
我应该创建一个包含与上面列完全匹配的属性的域对象“EmployeeWithManager”吗?
我应该创建某种包含Employee对象和Manager对象的“数据访问对象”吗?
不幸的是,使用ORM,参数化查询或更改存储过程不是一种选择。
答案 0 :(得分:1)
了解。这就是我要做的,仍然创建匹配您的域匹配的域对象。
原因
我的方法,
Class Employee{ String Id; String FirstName; ... Manager EmployeeManager; }
Class EmployeeDAL{ Employee GetEmployeeWithManager(string EmployeeId){ //user data reader to populate your Employee object and fill it with Manager Manager m = New Manager(); //fill Manager from SP Employee e = New Employee(); //fill Employee from SP e.EmployeeManager = m; return e; } }
Class EmployeeController{ PopulateEmployee(string EmployeeId){ Employee e = EmployeeDAL.GetEmployeeWithManager(EmployeeId); Databind(e); 'you can also access your manager from e.EmployeeManager }
}