2011-01-28 105 views
2

我有一個Linq-to-SQL模型,它在某些地方使用存儲過程來返回需要更復雜SQL的對象。這一切工作正常。來自SP的Linq-to-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不是很好),但我不知道如何返回該對象?

+0

你爲什麼不只是返回員工PK列(s)代替僱員complext類型,並且只是通過LINQ to SQL從程序返回標準匿名類型?然後,您可以通過第二個查詢返回員工並手動合併這兩個手動來填充完整員工。這隻會是幾行代碼。 – JohnOpincar 2011-01-28 13:56:35

回答

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

我建議創建的羅塔對象需要存儲過程的結果作爲一個參數的構造函數...這樣,你可以做

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