Часто задаваемые вопросы о LINQ - часть вторая - Простой пример CRUD с помощью LINQ
ОГЛАВЛЕНИЕ
Простой пример CRUD с помощью LINQ
Шаг 1: Создать сущность класса «Клиент»
На первом шаге создается сущность класса «Клиент», как показано в следующем фрагменте кода.
[Table(Name = "Customer")]
public class clsCustomerEntity
{
private int _CustomerId;
private string _CustomerCode;
private string _CustomerName;
[Column(DbType = "nvarchar(50)")]
public string CustomerCode
{
set
{
_CustomerCode = value;
}
get
{
return _CustomerCode;
}
}
[Column(DbType = "nvarchar(50)")]
public string CustomerName
{
set
{
_CustomerName = value;
}
get
{
return _CustomerName;
}
}
[Column(DbType = "int", IsPrimaryKey = true,IsDbGenerated=true)]
public int CustomerId
{
set
{
_CustomerId = value;
}
get
{
return _CustomerId;
}
}
}
Шаг 2: Создание (create) с помощью LINQ
Создать контекст данных
Сначала создается объект ‘datacontext’ с использованием строки подключения.
DataContext objContext = new DataContext(strConnectionString);
Установить данные для вставки
Следующий шаг после создания подключения с помощью объекта ‘DataContext’ – создать объект-сущность «Клиент» и присвоить данные свойству объекта.
clsCustomerEntity objCustomerData = new clsCustomerEntity();
objCustomerData.CustomerCode = txtCustomerCode.Text;
objCustomerData.CustomerName = txtCustomerName.Text;
Сделать обновление в памяти
Затем делается обновление в памяти в самих объектах-сущностях с помощью метода ‘InsertOnSubmit’.
objContext.GetTable<clsCustomerEntity>().InsertOnSubmit(objCustomerData);
Сделать конечную физическую фиксацию
Наконец, делается физическая фиксация в реальной базе данных. Помните, что пока не вызван ‘SubmitChanges()’, данные не зафиксированы окончательно в базе данных.
objContext.SubmitChanges();
Окончательный код
Ниже приведен окончательный собранный код LINQ.
DataContext objContext = new DataContext(strConnectionString);
clsCustomerEntity objCustomerData = new clsCustomerEntity();
objCustomerData.CustomerCode = txtCustomerCode.Text;
objCustomerData.CustomerName = txtCustomerName.Text;
objContext.GetTable<clsCustomerEntity>().InsertOnSubmit(objCustomerData);
objContext.SubmitChanges();
Шаг 3: Обновление (update) с помощью LINQ
Возьмем следующую операцию базы данных, т.е. «Обновить».
Создать контекст данных
Как обычно, сначала надо создать объект ‘datacontext’ с помощью строки подключения, как сказано в шаге «Создать».
DataContext objContext = new DataContext(strConnectionString);
Выбрать объект LINQ пользователь, который надо обновить
Получить путем запроса LINQ объект LINQ, который надо обновить
var MyQuery = from objCustomer in objContext.GetTable<clsCustomerEntity>()
where objCustomer.CustomerId == Convert.ToInt16(txtCustomerId.Text)
select objCustomer;
Наконец, установить новые значения и обновить данные в физической базе данных
Делаются обновления и вызывается ‘SubmitChanges()’ для осуществления окончательного обновления.
clsCustomerEntity objCustomerData = (clsCustomerEntity)MyQuery.First<clsCustomerEntity>();
objCustomerData.CustomerCode = txtCustomerCode.Text;
objCustomerData.CustomerName = txtCustomerName.Text;
objContext.SubmitChanges();
Окончательный код «Обновить на LINQ»
Ниже показано, как выглядит окончательный запрос на обновление на LINQ.
DataContext objContext = new DataContext(strConnectionString);
var MyQuery = from objCustomer in objContext.GetTable<clsCustomerEntity>()
where objCustomer.CustomerId == Convert.ToInt16(txtCustomerId.Text)
select objCustomer;
clsCustomerEntity objCustomerData = (clsCustomerEntity)MyQuery.First<clsCustomerEntity>();
objCustomerData.CustomerCode = txtCustomerCode.Text;
objCustomerData.CustomerName = txtCustomerName.Text;
objContext.SubmitChanges();
Шаг 4: Удаление (Delete) с помощью LINQ
Рассмотрим следующую операцию базы данных – «Удалить».
DeleteOnSubmit
Не разбираются предыдущие шаги, такие как создание контекста данных и выбор объекта LINQ, они объяснены в предыдущем разделе. Чтобы удалить объект из памяти, надо вызвать ‘DeleteOnSubmit()’, а для удаления из конечной базы данных надо использовать ‘SubmitChanges()’.
objContext.GetTable<clsCustomerEntity>().DeleteOnSubmit(objCustomerData);
objContext.SubmitChanges();
Шаг 5: Понятные без пояснений выборка (select) и чтение (read) на LINQ
На последнем шаге объект LINQ выбирается и читается по условию. Ниже приведен фрагмент кода, показывающий, как запустить запрос LINQ и присвоить значение объекта пользовательскому интерфейсу ASP.NET.
DataContext objContext = new DataContext(strConnectionString);
var MyQuery = from objCustomer in objContext.GetTable<clsCustomerEntity>()
where objCustomer.CustomerId == Convert.ToInt16(txtCustomerId.Text)
select objCustomer;
clsCustomerEntity objCustomerData = (clsCustomerEntity)MyQuery.First<clsCustomerEntity>();
txtCustomerCode.Text = objCustomerData.CustomerCode;
txtCustomerName.Text = objCustomerData.CustomerName;