Некоторый фон
Как только результат хранимой процедуры был возвращен, он преобразуется в ISingleResult, который реализует IEnumerable, и возвращается вызывающему клиенту.Поскольку ISingleResult является универсальным классом, объект с тем же именем, что и sproc, создается с теми же свойствами, что и хранимая процедура.
При использовании хранимых процедур они могут возвращать только элементы типа ISingleResult или IMultipleResult.Это вызывает ряд проблем при использовании созданных объектов.Во-первых, в вашем клиентском коде вам придется вручную преобразовывать результат во что-то вроде ToList (), если вы хотите привязать объекты к источнику данных.Если вы преобразуете объекты в список, они не будут отслеживаться.Наконец, вы не можете извлечь выгоду из отложенной загрузки при использовании хранимых процедур, поскольку вызов базы данных выполняется при вызове метода.
Прочитайте полную статью здесь: http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html
Проверьте это тоже: возможное решение, при котором вы немедленно переназначаете результат в собственное представление POCO.Вы также можете использовать запрос LINQ для управления вашим результатом:
LINQ to SQL: результаты хранимых процедур