Дозвуковая 3: строго типизированное возвращаемое значение для хранимых процедур, которые возвращают смешанные результаты из разных таблиц - PullRequest
0 голосов
/ 14 июля 2010

Скажем, у меня есть хранимая процедура, которая возвращает набор данных из 2 разных таблиц.Пример:

SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer
FROM Customers LEFT JOIN Sales
ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.FirstName, Customers.LastName 

Есть ли способ получить строго типизированный список в результате этой хранимой процедуры?Примерно так:

StoredProcedure sp = myDevDB.GetCustomerSales();

List<MyCustomType> resultSet = sp.ExecuteTypedList<MyCustomType>();

Как и где мне определить класс MyCustomType?Как мне сопоставить его свойства с фактическими столбцами таблицы?

Спасибо, Зохраб.

1 Ответ

3 голосов
/ 09 апреля 2011

Я только что создал веб-страницу asp.net, которая делает это.Попробуйте это:

    DataSet ds = new DataSet();
    SqlDataAdapter adtp = new SqlDataAdapter(command);
    adtp.Fill(ds);
    StringBuilder b = new StringBuilder();

    b.AppendLine("class " + this.txtSP.Text + "_QueryResult");
    b.AppendLine("{");  

    foreach ( DataColumn c in ds.Tables[0].Columns )
    {
        b.AppendLine(string.Format("property {0} {1}  {{ get; set; }}", c.DataType, c.ColumnName));
    }
    b.AppendLine("}" + Environment.NewLine);

    this.txtResult.Text = b.ToString();
}
catch { }
...