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(); } |
回到目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示