2013-12-08 65 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(); 
}