CRUD в Winforms с linq-to-sql - PullRequest
       26

CRUD в Winforms с linq-to-sql

3 голосов
/ 31 июля 2010

У меня есть простое приложение winforms, которое я подключаю к своей базе данных с помощью linq-to-sql.

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

У меня есть представление, которое использует источник данных объекта для заполнения DataGridView и набора связанных текстовых полей и т. Д. Для моей сущности (назовем его EmployeeView)

Представление загружает все существующие строки, и когда я щелкаю по сетке, поля обновляются соответствующим образом.

Если я изменю поля, изменения будут сохраняться при внесении изменений в записи, но я не уверен, как сохранить изменения через слой доступа к данным. Как я могу определить, какие записи являются грязными и должны быть сохранены? Как мне их потом сохранить? Каков наилучший способ добавить новые записи? Удалить записи?

Я могу найти много ресурсов в Интернете, но ни одного с примерами, которые мне нужны. Может кто-нибудь помочь мне с некоторыми из основных моделей или указать мне хорошее место?

1 Ответ

5 голосов
/ 31 июля 2010

Я полагаю, что наиболее простой способ использования классов LINQ-to-SQL - создать их список (например, давайте использовать Employee), чтобы он содержал сотрудников, которых вы хотите (потенциально) редактировать.Когда свойства этих объектов Employee изменяются, объекты автоматически «пачкаются», и вызов DataContext.SubmitChanges () сохраняет их.

List<Employee> employees = (from e in dataContext.Employees where e.Salary > 50000 select e).toList();

foreach(var employee in employees)
{
  employee.CanAffordToyotaPrius = true;
}

dataContext.SubmitChanges();

Если вы переносите DataContext и изменяете толькоВ свойствах объекта-оболочки с DataGridView вам понадобится какой-то способ разбить эти изменения на базовые объекты LINQ-to-SQL, которые вы использовали при выборе данных.Например, вы можете использовать установщик в свойствах вашей оболочки, чтобы также установить свойства базового объекта LtS.

...