|
Листинг 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 вызывается без выполнения других манипуляций с присоединенной сущностью. Это вызвано тем, что сущность находится в
неизмененном состоянии.