Я просто получаю голову вокруг 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#, теперь наилучшее время для изучения ООП.
Если вы не используете 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
}
Это распространенная проблема. К счастью, на это есть хороший ответ: Linq To Sql! Вы можете прочитать об этом здесь: http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
Что он в основном делает заключается в том, что он создает класс, по одному для каждой таблицы, которую вы выбираете в своей базе данных. Это позволяет очень легко перенести все ваши объекты прямо из базы данных в объектно-ориентированное программирование.
Сохранить так же просто, как вызвать функцию SubmitChanges (). Для этого есть и другие провайдеры, но я думаю, что Linq подойдет вам как новичку, поскольку он абстрагирует множество раздражающих частей.
Я бы порекомендовал вам взглянуть на 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 также позаботится о написании стандартного кода для объявления классов на основе базы данных. состав.
Linq2Sql, предложенный дважды, - не единственный способ, но имея в виду случай, когда все объекты могут быть сопоставлены один к одному с таблицами в вашей базе данных, он отлично работает . Лично я бы предпочел EF, потому что он позволяет получить еще один уровень абстракции.
Также я могу предложить вам взглянуть на db4o и т. Д., Там вы просто можете сэкономить poco и все.