C # Заполнение объекта из базы данных - PullRequest
0 голосов
/ 05 ноября 2010

В настоящее время наш DAL (уровень доступа к данным) запрашивает базу данных, и мы перебираем результирующие данные, чтобы заполнить объект (один объект на строку), в котором конечный результат представляет собой список.

Что является наиболееэффективный (и самый быстрый) способ заполнения объектов?

Какой самый быстрый способ получить данные из базы данных и в конкретный объект, предназначенный для этого набора результатов?

Это C #

- РЕДАКТИРОВАТЬ

Под быстродействием мы понимаем скорость обработки компьютера, а не скорость разработки.
Это также приложение .NET 2.0

--

Ответы [ 3 ]

1 голос
/ 05 ноября 2010

Наиболее эффективен способ использования SqlDataReader только для пересылки http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx

Требует большого количества кода "котельной пластины", однако, не самый быстрый для написания. Я лично использую NHiberate для этого, но это требует некоторого обучения http://nhforge.org/Default.aspx

1 голос
/ 05 ноября 2010

Есть много способов сделать это, в зависимости от того, какую версию C # вы используете.Вы можете использовать следующее:1. DataSet (.net 2.0 выше, я думаю?)2. Linq2SQL (выше .net 3.5)3. EntityFramework (.net 3.5 выше)

Например, используя Linq2SQL:

var result = (from t in YourTable
              select t).ToList();
0 голосов
/ 05 ноября 2010

Я полагаю, что самым быстрым (как в самом быстром развитии) является LINQ to SQL .

Это именно так. Создайте классы, которые представляют список атрибутов из каждой таблицы. При обращении к ним он автоматически извлекает данные из базы данных и заполняет эти объекты данными, которые затем можно использовать в качестве списка объектов. Это все автоматизировано. Вы просто пишете одну строку кода для этого после того, как вы сделали сопоставление (перетаскивали таблицы из базы данных в сопоставление Linq to SQL)

Код может выглядеть так просто:

List<Something> yourList = YourAutomaticallyGeneratedDataContext.Something.ToList();

Конечно, для Firebird LINQ to SQL не будет работать. Попробуйте вместо этого Entity Framework. На мой взгляд, NHibernate - слишком большая суета.

Но поскольку вы хотите, чтобы Quickest обрабатывал , я рекомендую вам посетить этот сайт: http://ormbattle.net/ Выберите свое оружие, затем стреляйте. Я не рассматриваю вариант с DataReader. Это боль и может привести к ошибкам. Это тоже сложно поддерживать.

Или, проверьте этот вопрос, Лучшие бесплатные инструменты ORM для использования с .NET 2.0 / 3.5

...