构建存储库更新方法而不附加/分离实体?

时间:2013-03-12 02:02:25

标签: asp.net asp.net-mvc-3 web-applications asp.net-mvc-4

我有以下更新方法,似乎有效:

public Folder UpdateFolder(Folder folder)
        {
            Folder serverFolder = _db.Folders.FirstOrDefault(f => f.FolderId == folder.FolderId);
            if (serverFolder != null)
            {
                serverFolder.Title = folder.Title;
                serverFolder.Details = folder.Details;
            }
            SaveChanges();
            return serverFolder;
        }

我刚刚注意到我读过的大多数Update方法都调用了Entry.StateDetached和StateAttached - 这就是我上面所做的,或者我错过了什么?

2 个答案:

答案 0 :(得分:0)

没关系。 _db.Folders.FirstOrDefault读取Folder并附加到上下文。

如果您只是传入Folder(未阅读)并尝试更新实体,则需要检查该实体是否已附加。

基本上,Folder serverFolder = _db.Folders.FirstOrDefault(f => f.FolderId == folder.FolderId);可确保附加文件夹,因此您无需担心。

答案 1 :(得分:0)

我认为您需要_db.SaveChanges();代替SaveChanges();