我有一个返回结果集的存储过程(4列x n行)。数据基于我的数据库中的多个表,并为公司内的每个部门提供摘要。这是样本:
usp_GetDepartmentSummary
DeptName EmployeeCount Male Female
HR 12 5 7
etc...
我正在使用linq-to-sql从我的数据库中检索数据(nb - 必须使用sproc,因为它是我继承的东西)。我想调用上面的sproc并映射到一个部门类:
public class Department
{
public string DeptName {get; set;}
public int EmployeeCount {get; set;}
public int MaleCount {get; set;}
public int FemaleCount {get; set;}
}
在VS2008中,我可以将我的sproc拖放到linq-to-sql设计器的方法窗格中。当我检查designer.cs
时,此sproc的返回类型定义为:
ISingleResult<usp_GetDepartmentSummaryResult>
我想做的是以某种方式修改它,以便它返回Department
类型,以便我可以将sproc的结果作为强类型视图传递:
<% foreach (var dept in Model) { %>
<ul>
<li class="deptname"><%= dept.DeptName %></li>
<li class="deptname"><%= dept.EmployeeCount %></li>
etc...
任何想法如何实现这一目标?
注意 - 我已尝试直接修改designer.cs
和dbml xml file
但成效有限。我承认在直接更新这些文件方面有点超出我的深度,我不确定这是最佳做法?得到一些指示会很好。
非常感谢
答案 0 :(得分:5)
在linq2sql构建器中手动创建类,因此该类是作为linq2sql数据上下文的一部分生成的。将类命名为Department,使用您想要的名称添加4个属性中的每一个。在每个属性的属性中,您需要设置类型(.net类型)和服务器数据类型(varchar(100),int)和源(sproc返回的字段的名称)。 / p>
完成后,将sproc从服务器资源管理器拖到该类上,sproc的方法将返回一个结果作为该类型的集合。
答案 1 :(得分:1)
我试过这个并且它确实有效,但是如果SP使用临时表,它似乎不起作用。