Сложный пользовательский объект Linq-to-SQL от SP - PullRequest
2 голосов
/ 28 января 2011

У меня есть модель 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 ]

1 голос
/ 26 мая 2011

Я бы предложил создать конструктор для объекта Rota, который принимает результат sproc в качестве параметра ... таким способом вы можете сделать

.Select(x => new Rota(x)).ToList<Rota>();
1 голос
/ 28 января 2011

Я считаю, что это будет работать, хотя я не запускал его.Если это не так, я знаю, что вы могли бы сделать это с помощью функции 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...