2013-12-08 4 views
0

У меня проблема с сохранением существующего объекта сущности - он просто не сохраняет его.Редактирование существующей сущности и сохранение не сохраняются

Вот что у меня есть в моем хранилище

private MyEntities _entities; 

public EFUserFoldersRepository(MyEntities entities) 
{ 
    _entities = entities; 
} 

public void SaveUserFolder(UserFolder userFolder) 
{ 
    if (userFolder.UserFolderID == 0)   // new user folder 
     _entities.UserFolders.Add(userFolder); 
    else 
     _entities.UserFolders.Attach(userFolder); 

    _entities.SaveChanges(); 
} 

Если я создаю папку, это работает отлично, объект будет создаваться. Но если я редактирую существующую папку и использую метод Attach, ничего не происходит.

Есть ли что-то дополнительное, что мне нужно сделать здесь?

ответ

0

Вам необходимо установить въездной контекст .State свойство EntityState.Modified, как в следующем примере:

Закрепление существующего, но модифицированный объект к контексту

Если у вас есть объект, который вы уже знаете, существует в базе данных, но для каких изменений могут быть сделаны, тогда вы можете указать контексту для присоединения объекта и установить его состояние в Модифицированное. Например:

var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" }; 

using (var context = new BloggingContext()) 
{ 
    context.Entry(existingBlog).State = EntityState.Modified; 

    // Do some more work... 

    context.SaveChanges(); 
} 

Пример взят здесь: http://msdn.microsoft.com/en-us/data/jj592676.aspx

Ваш SaveUserFolder будет выглядеть следующим образом:

public void SaveUserFolder(UserFolder userFolder) 
{ 
    if (userFolder.UserFolderID == 0)   // new user folder 
     _entities.UserFolders.Add(userFolder); 
    else 
    { 
     _entities.UserFolders.Attach(userFolder); 
     _entities.Entry(userFolder).State = EntityState.Modified; 
    } 

    _entities.SaveChanges(); 
} 
Смежные вопросы