我在尝试保存现有实体对象时遇到问题 - 它只是不保存它。
这是我在我的存储库中的内容
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 :(得分:0)
您需要将上下文条目.State属性设置为EntityState.Modified,如下例所示:
将现有但已修改的实体附加到上下文
如果您知道某个实体已经存在于数据库中但可能已对其进行了更改,那么您可以告诉上下文附加实体并将其状态设置为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();
}