Создание объекта C# из таблицы данных

Я просто получаю голову вокруг C#. Я создавал классы и объекты, так скажите, что я создал класс, названный участником:

 public class Member
 {
     public int MemberID;
     public string FirstName;
     public string LastName;
     public string UserName;
 }

и я создаю новый объект того класса путем выполнения этого:

    Member Billy = new Member();

    Billy.UserName = "Jonesy";
    Billy.FirstName = "Billy";
    Billy.LastName = "Jones";

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

Я использовал VB.Net, где я просто добавил бы их в таблицу данных. Но я действительно никогда не делал никакого объектно-ориентированного программирования прежде и думал, так как я изучаю C#, теперь наилучшее время для изучения ООП.

5
задан Michael Petrotta 28 March 2010 в 21:02
поделиться

4 ответа

Если вы не используете LINQ to SQL (или Entity Framework), используйте обычный ADO.NET DataReader . просмотреть результаты, создать экземпляр нового объекта с деталями и добавить его в список.

Примерно это будет выглядеть так:

List<Member> members = new List<Member>();
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (SqlCommand command = new SqlCommand(queryString, connection))
    {
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                Member member = new Member();
                member.UserName = reader.GetString(0);
                member.FirstName = reader.GetString(1);
                member.LastName = reader.GetString(2);
                members.Add(member);
            }
        }
    }
}

foreach(Member member in members)
{
    // do something
}
1
ответ дан 15 December 2019 в 06:22
поделиться

Это распространенная проблема. К счастью, на это есть хороший ответ: Linq To Sql! Вы можете прочитать об этом здесь: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

Что он в основном делает заключается в том, что он создает класс, по одному для каждой таблицы, которую вы выбираете в своей базе данных. Это позволяет очень легко перенести все ваши объекты прямо из базы данных в объектно-ориентированное программирование.

Сохранить так же просто, как вызвать функцию SubmitChanges (). Для этого есть и другие провайдеры, но я думаю, что Linq подойдет вам как новичку, поскольку он абстрагирует множество раздражающих частей.

1
ответ дан 15 December 2019 в 06:22
поделиться

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

Member member = db.Members.Single(member => member.UserName == "Jonesy");

или для получения пользователей, соответствующих критерию:

IQueryable<Member> members = db.Members
    .Where(member => member.LastName == "Jones");

LINQ to SQL также позаботится о написании стандартного кода для объявления классов на основе базы данных. состав.

1
ответ дан 15 December 2019 в 06:22
поделиться

Linq2Sql, предложенный дважды, - не единственный способ, но имея в виду случай, когда все объекты могут быть сопоставлены один к одному с таблицами в вашей базе данных, он отлично работает . Лично я бы предпочел EF, потому что он позволяет получить еще один уровень абстракции.

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

0
ответ дан 15 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: