zoukankan      html  css  js  c++  java
  • 框架重构:记录创建人、最后修改人、创建时间、最后修改时间

    Entity(框架代码)

    public interface IEntity
    {
        Guid DBID { get; }
        DateTime CreateTime { get; set; }
        DateTime UpdateTime { get; set; }
        string CreateUser { get; set; }
        string UpdateUser { get; set; }
        string Remark { get; set; }
    }
    
    [Serializable]
    public class Entity<TEntity> : IEntity 
        where TEntity : IEntity
    {
        public virtual Guid DBID { get; protected set; }
        public virtual DateTime CreateTime { get; set; }
        public virtual DateTime UpdateTime { get; set; }
        public virtual string CreateUser { get; set; }
        public virtual string UpdateUser { get; set; }
        public virtual string Remark { get; set; }
    }
    

    Command(框架代码)

    • 所有的实体(聚合根)都会经由Command来设置自身的属性值,在Command的基类中为每个实体自动填写创建人、最后修改人、创建时间、最后修改时间是非常合适的。
    • Entity声明在Command中
    • Repository声明在Command中
    public interface ICommand<T> 
        where T : Entity<T>
    {
        T Entity { get; set; }
    }
    
    public class Command<T> : ICommand<T>
        where T: Entity<T>
    {
        public T Entity { get; set; }
        protected IRepository repository;
        protected Command(T entity)
        {
            Entity = entity;
            repository = IoC.Get<IRepository>();
            SetUpdateTime();
            SetUpdateUser();
        }
        private void SetUpdateUser()
        {
            var user = IoC.Get<IAuthenticationService>().GetCurrentRealName();
            if (string.IsNullOrEmpty(Entity.CreateUser))
                Entity.CreateUser = user;
            Entity.UpdateUser = user;
        }
        private void SetUpdateTime()
        {
            if (Entity.CreateTime == new DateTime().SqlServerMinValue())
                Entity.CreateTime = DateTime.Now;
            Entity.UpdateTime = DateTime.Now;
        }
    }
    

    使用Command(业务代码)

    public interface ISaftLawCommand : ICommand<SaftLaw>
    {
        ......
    }
    
    public class SaftLawCommand : Command<SaftLaw>, ISaftLawCommand
    {
        public SaftLawCommand(SaftLaw saftLaw) : base(saftLaw)
        {
        }
        
        ......
    }
    

    注意事项

    • 不要忘了在会话中记录用户名(账号/真实姓名)
    // 在登录的时候记录
    authenticationService.SaveCurrentRealName(account.Id.UserName);
    

    效果

  • 相关阅读:
    PAIP.img ROM文件提取APK
    paip.提升程序稳定性最佳实践
    paip.验证码识别序列号的反转
    paip.android APK安装方法大总结系统应用的安装
    paip.php调试脱离IDE VC59
    paip.声音按键音延迟的解决
    paip.提升效率几款任务栏软件vc59
    paip.android 读取docx总结
    paip.C#.NET多线程访问 toolStripStatusLabel VC421
    paip.Image对象出现“对象当前正在其他地方使用或者GDI+中发生一般性错误的解决
  • 原文地址:https://www.cnblogs.com/tuty/p/6741618.html
Copyright © 2011-2022 走看看