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();
 
       }
本文转自博客园张占岭(仓储大叔)的博客,原文链接:EF架构~终于实现了Update方法的统一 ,如需转载请自行联系原博主。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值