来自SP的Linq-to-SQL复杂自定义对象

时间:2011-01-28 13:21:21

标签: c# linq-to-sql

我有一个Linq-to-SQL模型,它在某些地方使用存储过程来返回需要更复杂SQL的对象。一切正常。

我现在需要从SP中返回一个自定义对象,该对象也封装了Linq-to-SQL对象。例如,我有一个基于Employee表的名为Employee的类。我还有一个名为rota的自定义类,定义如下:

public class rota
{
    public Employee employee{ get; set; }
    public int DisplayOrder { get; set; }
    public DateTime StartingTime { get; set; }
    public DateTime FinishTime { get; set; }
}

我有一些相当复杂的linq,可以计算任何给定日期的员工轮回,然后返回该对象。我想将这个逻辑移动到存储过程,所以我完全控制sql(生成的sql不是很好)但是我不知道如何返回该对象?

2 个答案:

答案 0 :(得分:1)

我相信这会有效但我还没有运行它。如果没有,我知道您可以使用返回表变量的SQL函数来执行此操作。

from x in dataContext.StoredProc("", "", "")
select new Rota {
    DisplayOrder = x.DisplayOrder,
    StartingTime = x.StartingTime,
    FinishTime = x.FinishTime,
    Employee = new Employee {
        EmployeeId = x.EmployeeId,
        Name = x.EmployeeName
    }
}

答案 1 :(得分:1)

我建议为Rota对象创建一个构造函数,将sproc结果作为参数......这样你可以做到

.Select(x => new Rota(x)).ToList<Rota>();