Часто задаваемые вопросы о 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();
Итоговый код create на LINQ
Ниже приведен итоговый собранный код 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
Рассматривается следующая операция над базой данных, т. е. update.
Создать контекст данных
Как обычно, сначала надо создать объект DataContext с использованием строки подключения, как сказано в шаге create.
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 update
Ниже показан итоговый код запроса LINQ update:
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
Рассматривается следующая операция над базой данных – delete.
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;