2015-10-06 3 views
1

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

.txt файл:

1122233 
4455566 

Пример Класс:

[FixedLengthRecord(FixedMode.AllowLessChars)] 
public class Example 
{ 

    [FieldFixedLength(2)] 
    public string first; 

    [FieldFixedLength(3)] 
    public string second; 

    [FieldFixedLength(2)] 
    public string third; 
} 

Читая это с filehelpers дает мне 2 объекты Example.The первого значения Example.first быть '11' и т.д. I перетащите эти данные в базу данных, преобразуя List в DataTable и используя SqlBulkCopy. Все идет хорошо.

Таблица в базе данных содержит только 3 столбца (varchar) с именами столбцов; первый, второй и третий.

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

IDbConnection connection = new SqlConnection(connectionString); 
var rows = connection.Query<Example>("select * from examplesTable"); 
     foreach (Example e in rows) 
     { 
      examples.Add(e); //List<Example> examples 
     } 

Это возвращает правильное количество строк, однако, если я пытаюсь извлечь данные из объектов, он содержит нулевые данные. Я не могу понять, что я делаю неправильно.

+0

«однако, если я пытаюсь извлечь данные из объектов» - в какую часть кода это относится? – Hughnited

+0

@ Hughnited Я тестировал это с добавлением MessageBox.Show (e.First); в цикле foreach, но ничего не показывает (пустое окно). Я также попытался преобразовать этот список в DataTable и вернуть его обратно в базу данных, результатом чего является то, что он подталкивает правильное количество строк, но все данные являются нулевыми. – RedZerg

+0

В foreach: examples.Add (e); MessageBox.Show (e.First); // возвращает пустое окно. – RedZerg

ответ

1

Я хотел бы проверить, что у вас есть данные, загруженные правильно до SQL массовой вставки, а затем, что вы не получаете никаких ошибок с массовой вставки.

Имеет ли таблица в студии управления SQL правильные данные?

Если у вас есть правильные данные, пытающиеся просто читать в виде таблицы данных, чтобы увидеть, что возвращается, поскольку это будут значения объектов, а не определенный тип.

+0

Спасибо за ответ. Да, данные загружены правильно. Я пробовал ваш совет, читая его как DataTable, и это сработало! Он показывает все правильные данные. Но мне нужен список объектов данных, поэтому я попытался преобразовать этот тип данных в список и снова, он отображает все нули .. :( – RedZerg

+0

Я исправил его, мое преобразование в список было плохим. Спасибо за идею прочитать его как DataTable! – RedZerg

1

Невозможно просто написать foreach (Example e in rows), вы должны создать конструктор для примера, который создаст объект примера на основе данных из каждой строки. Это будет выглядеть как своего рода

foreach (DaraRow r in rows) 
     { 
      Example e = new Examaple(r["First"],r["Second"]); 
      examples.Add(e); //List<Example> examples 
     } 
+0

Спасибо, я попробую это. – RedZerg

Смежные вопросы