Возврат нескольких объектов из одной записи с использованием LINQ to SQL - PullRequest
1 голос
/ 01 мая 2011

У меня есть хранимая процедура, которая возвращает такую ​​запись (я упростил ее)

SELECT 
    Id, FirstName, LastName, Father.FirstName, Father.LastName
FROM Profiles 
Left JOIN Profiles Father on Profiles.FatherId = Father.Id

Я хочу, чтобы эта запись возвращалась как 2 свойства объекта

var result = dataContext.StoredProcedure();
Profile = result.Profile;
Father = result.Father;

У меня вопрос, как мне взять одну запись? 1007 *

SELECT 
    Id, FirstName, LastName, Father.FirstName, Father.LastName

И разделить половину, чтобы стать одним свойством / объектом (Профилем), а другую половину, чтобы стать другим свойством / объектом (Отцом)

Причина использования хранимой процедуры Фактическая инструкция sql включает полнотекстовый поиск, который не поддерживается в linq, поэтому я не могу использовать обычный запрос linq.

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Если я правильно понимаю вашу проблему, вам нужны два строго типизированных объекта: «Профиль» и «Отец» из набора результатов SQL. Я вижу два варианта сделать это;

1> Получите ваши результаты как есть из сохраненного процесса и создайте ваши объекты, как указано ниже;

Profile p = new Profile P { Id=result.Id, FirstName= result.FirstName, LastName=result.LastName}; 
//and similar code for creating the 'Father' object

2> В вашем сохраненном процессе сначала получите результаты в табличной переменной, а затем выберите два результата из этой табличной переменной: первый «Профиль», второй «Отец». Ваш метод LINQ to SQL, вызывающий хранимый процесс, должен быть разрешен для нескольких наборов результатов. Затем вы можете получить доступ к результатам, как;

Profile = result.Profile;
Father = result.Father;
0 голосов
/ 01 мая 2011
  • Создание объекта строго типа с 2 свойствами: Profile, Father
  • Создание свойства навигации Father для объекта Profile, чтобы при получении Profile потребитель мог легко перейти к Father
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...