Хитрости для генерации List <double>в рамках сущности как данных из аналогичного набора столбцов - PullRequest
0 голосов
/ 23 марта 2012

Я занимаюсь разработкой приложения silverlight с использованием WCF и EF.

Сначала я использую базу данных, поскольку наша база данных уже существует.

У меня есть таблица, которая состоит из 100 столбцов с реальным типом данных. Мы хотим создать класс, который имеет List<double> или List<float> вместо 100 дискретных переменных в классе для каждого столбца.

Возможно ли это? Может кто-нибудь привести пример?

1 Ответ

0 голосов
/ 23 марта 2012

Прямого пути нет. Что вам нужно сделать, это использовать отражение, чтобы преобразовать его в List<double>. Предположим, что имена вашей таблицы называются MyObject, тогда EF сгенерирует класс MyObject для представления строки в этой таблице. Затем вы можете сделать:

Type type = typeof(MyObject);
// Get properties (columns) through reflection 
PropertyInfo[] properties = type.GetProperties(); 
List<List<double>> allRows = new List<List<double>>();

using(var dbContext = MyDB.GetContext())
{
    foreach(var row in dbContext.MyRows)
    {
         List<double> columnValues = new List<double>();
         foreach (PropertyInfo property in properties)
         {
            // The sql type REAL will map to either float or double
            if(property.PropertyType == typeof(float)) 
            {
                 columnValues.Add( (double) property.GetValue(row, null) );
            }
         }
         allRows.Add(columnValues);
    }
}

Надеюсь, вы поняли идею.

...