• Abp框架之审计日志


    1、在ABP中,实体派生自Entity类。所有实体的主键名都是Id,但可以是不同的类型,通过泛型来区别,默认为int。

    public class Person : Entity<Guid>
    {
        public virtual string Name { get; set; }
    
        public virtual DateTime CreationTime { get; set; }
    
        public Person()
        {
            CreationTime = DateTime.Now;
        }
    }

    2、接口关系图(蓝色表示属性/方法)

    Entity类实现了IEntity接口。如果不想从Entity类中派生,那么可以直接实现这些接口。但是,除非你有一个好的原因不从Entity类派生,否则,不建议这么做。

    Entity<TPrimaryKey>重写了Equals方法

     public override bool Equals(object obj)
            {
                if (obj == null || !(obj is Entity<TPrimaryKey>))
                {
                    return false;
                }
    
                //如果引用相同,则两个实体相同
                if (ReferenceEquals(this, obj))
                {
                    return true;
                }
    
                //没有Id的对象互不相同
                var other = (Entity<TPrimaryKey>)obj;
                if (IsTransient() && other.IsTransient())
                {
                    return false;
                }
    
                //如果两个实体的类型互相之间没有继承关系,则为不同实体
                var typeOfThis = GetType();
                var typeOfOther = other.GetType();
                if (!typeOfThis.IsAssignableFrom(typeOfOther) && !typeOfOther.IsAssignableFrom(typeOfThis))
                {
                    return false;
                }
    
                //比较两者的Id是否相等
                return Id.Equals(other.Id);
            }
  • 相关阅读:
    ios原生项目内嵌u3d工程
    u3d内嵌H5游戏 设置cookie
    unity3d IL2CPP for android
    unity3D内嵌android项目
    Django 跨域问题
    tensorflow 调试tfdbg
    Cuda9.1+cunn7.1+Tensorflow1.7-GUP
    shader
    lua 中protobuf repeated 嵌套类 复合类型
    30岁的思考
  • 原文地址:https://www.cnblogs.com/guangmangchen/p/5301629.html
Copyright © 2020-2023  润新知