zoukankan      html  css  js  c++  java
  • EF架构~终于实现了Update方法的统一

    回到目录

    首先,由于统一更新需要把原实例复制一份过来,所以要有一个主键统一的功能,而我们知道,不可以把所有表的主键都设置成统一的名称,所以,我们只能从一个虚拟的主键上想办法,这时,为了完成我们的需要,我们应该引进一个IEntity实体的统一接口,它有一个属性,我们使用ID表示,即它是统一实体的主键,由于int类型可以完全转化为string,所以我们把类型定义为string

    代码如下:

    namespace Entity
    
    {
    
        /// <summary>
    
        /// 实体模块统一接口
    
        /// </summary>
    
        public interface IEntity
    
        {
    
            /// <summary>
    
            /// 为了主键统一,而手动设置的
    
            /// </summary>
    
            string ID { get; }
    
        }
    
    }
    
    而userbas这个实体将去实现IEntity这个接口,它的代码就变成了:
    public class UserBas : IEntity
    
        {
    
            public UserBas()
    
            {
    
                this.Diaries = new List<Diary>();
    
                this.User_Roles = new List<User_Roles>();
    
            }
    
         
    
            public string UserID { get; set; }
    
            public string UserName { get; set; }
    
            public string Email { get; set; }
    
            public string Password { get; set; }
    
            public System.DateTime CreateDate { get; set; }
    
            public System.DateTime UpdateDate { get; set; }
    
            public int Status { get; set; }
    
            public virtual ICollection<Diary> Diaries { get; set; }
    
            public virtual ICollection<User_Roles> User_Roles { get; set; }
    
            public virtual UserInfo UserInfo { get; set; }
    
     
    
            #region IEntity Members
    
     
    
            /// <summary>
    
            /// 返回实体的主键
    
            /// </summary>
    
            public string ID
    
            {
    
                get { return UserID; }
    
            }
    
     
    
            #endregion
    
        }
    

    基础工作做完后,我们就可以修改EntityRepository.cs这个数据统一操作实现类了,

    看它的update部分:

      #region IEntityRepository<TEntity> Members
    
            public void Update(TEntity entity)
    
            {
    
                var entry = this._db.Entry(entity);
    
                if (entry.State == EntityState.Detached)
    
                {
    
                    var entityToUpdate = DbSet.Find(entity.ID);
    
                    EmitMapper.ObjectMapperManager.DefaultInstance.GetMapper<TEntity, TEntity>()
    
                                                  .Map(entity, entityToUpdate);
    
                    this.SaveChanges();
    
                }
    
            }
    
     
    
            public void Update(IList<TEntity> list)
    
            {
    
                throw new NotImplementedException();
    
            }
    


    回到目录
  • 相关阅读:
    enca工具,检测文件编码
    ubuntu 支持gbk
    LinkedList线程安全问题
    php防止form重复提交的方法
    Linux 内存泄露调试工具
    从B树、B+树、B*树谈到R 树
    Ubuntu 语言设置
    wwwauthenticate
    Lua脚本语法说明
    jQuery学习总结之元素的相对定位和选择器持续更新中
  • 原文地址:https://www.cnblogs.com/lori/p/2115982.html
Copyright © 2011-2022 走看看