Материал: Глава 17.1 Entity Framework

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

Листинг 17.14

 

 

 

1

using(UserContainer db = new UserContainer())

 

2

{

 

3

db.Entry(user).State = EntityState.Deleted;

 

4

db.SaveChanges();

 

5

}

 

В данном случае состояние сущности изменяется на “Удалено” для ее удаления из базы данных и отсоединения из контекста после вызова метода

SaveChanges.

Присоединение существующей сущности к контексту

Если у вас есть сущность, которая уже существует в базе данных, но в настоящий момент не отслеживается контекстом, можно указать контексту отслеживание сущности с помощью метода Attach в DbSet. Сущность будет находиться в неизмененном состоянии в контексте.

Например:

Листинг 17.15

1

User user = new User() { Log = textBoxLog.Text, Password =

textBoxPassword.Text };

2

using (UserContainer db = new UserContainer())

3

{

4

db.Users.Attach(user);

5

string tempLog = db.Entry(user).Entity.Log;

6

db.Entry(user).Entity.Log = "Пользователь ";

7

db.Entry(user).Entity.Log += tempLog;

8

db.Users.Add(db.Entry(user).Entity);

9

db.SaveChanges();

10}

Встроке 4 объект user помещается в контекст данных UserContainer

внеизмененном состоянии. Далее, в строке 5 в строковую переменную

tempLog сохраняется логин, полученный от объекта, который был ранее помещен в контекст. В строках 6-7 происходит изменение структуры логина – в начало помещается слово “Пользователь”, после которого идет старый логин, записанный в поле ввода при создании пользователя. После этого, в

строке 8, происходит добавление объекта в контекст для дальнейшего добавления в базу данных после вызова метода SaveChanges.

Обратите внимание, что в базу данных не вносятся изменения, если метод SaveChanges вызывается без выполнения других манипуляций с присоединенной сущностью. Это вызвано тем, что сущность находится в

неизмененном состоянии.

Источник: https://studfile.net/preview/16573803/