首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖SaveChanges()鸡和鸡蛋

覆盖SaveChanges()鸡和鸡蛋
EN

Stack Overflow用户
提问于 2014-05-20 18:27:33
回答 1查看 149关注 0票数 0

我想知道是否有更好的方法从重写的SaveChanges()方法内部更新实体属性。我目前使用的是直接SQL。

这里是来自SaveChanges()的片段

代码语言:javascript
复制
public override SaveChanges(){                
        [...]
        if (updateId > 0)
        {
            string q = @"UPDATE NewClub SET 
                 LastActivityDate='" + DateTime.Now + "' WHERE Id=" + updateId;

            using (var context = new ReportingContext())
            {
                //ToDo: exception handling
                var result = context.Database.ExecuteSqlCommand(q);
            }
        }
    try
    {
        saveSuccess = base.SaveChanges() > 0;
    }
    catch (Exception e)
    {
        string ex = e.ToString();
    }
    return saveSuccess ? 1 : 0;
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-20 18:34:09

我正在用这段视频开头描述的技巧来开发我们最新的应用程序,到目前为止已经取得了很大的成功。

代码语言:javascript
复制
public int SaveChanges(IPrincipal user)
    {
        foreach (var dbEntityEntry in this.ChangeTracker.Entries()
            .Where(e => e.Entity is BaseEntity &&
            ((e.State == EntityState.Modified) || (e.State == EntityState.Added))))
        {
            ((BaseEntity) dbEntityEntry.Entity).ModificationBy = user.Identity.Name;
            ((BaseEntity)dbEntityEntry.Entity).ModificationDate = TimeProvider.Current.Now;

        }
        return base.SaveChanges();
    }

我们只通过上下文接口公开此Save方法。

代码语言:javascript
复制
public interface IMyContext
{
    int SaveChanges(IPrincipal user);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23767288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档