Возврат анонимных типов из хранимой процедуры с помощью LINQ2SQL - PullRequest
2 голосов
/ 02 марта 2009

Рассмотрим следующую хранимую процедуру:

SELECT * FROM Customers;

SELECT Customer.Id, Customer.Name, Order.Total, Order.DateOrdered
FROM Customers INNER JOIN Orders ON Customers.Id = Orders.CustomerId;

Процедура, очевидно, возвращает два набора результатов, которые я пытаюсь получить с помощью этого метода частичного класса:

public partial class DBSproc : DataContext
{
    [Function(Name = "dbo.spGetCustomersAndOrders")]
    [ResultType(typeof(Customer))]
    // What type should I use here for the second resultset?
    [ResultType(typeof(... what here? ...))] 
    public IMultipleResults GetCustomersAndOrders()
    {
        IExecuteResult result =
            this.ExecuteMethodCall(this,
               ((MethodInfo)(MethodInfo.GetCurrentMethod())));

        return (IMultipleResults)(result.ReturnValue);
    }
}

Я понимаю, что первый набор результатов будет сопоставлен с сущностью Customer, но как насчет второго? Второй - выбор пользователя, объединяющий несколько столбцов из нескольких таблиц. У меня нет сущности с этими свойствами.

Должен ли я создать фиктивную сущность только для этого набора результатов? Я надеялся, что смогу как-то использовать анонимные типы для таких специальных запросов.

Спасибо.

1 Ответ

0 голосов
/ 03 марта 2009

Вообще говоря, вы можете возвращать анонимные типы из метода только тогда, когда типом возврата является «объект». Затем вызывающий код не знает, какие свойства могут иметь ваши анонимные типы, если только он не использует отражение.

Так что да, вы можете использовать анонимные типы, но вы, вероятно, не хотите, потому что это не очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...