Это нормально иметь базовый тип для субъектов и объектов стоимость?


Пожалуйста, см. ниже код, который я в настоящее время использую в приложении. :

public abstract class Entity
{
    public virtual long Id { get; protected set; }
 
    public override bool Equals(object obj)
    {
        var compareTo = obj as Entity;
 
        if (ReferenceEquals(compareTo, null))
            return false;
 
        if (ReferenceEquals(this, compareTo))
            return true;
 
        if (GetRealType() != compareTo.GetRealType())
            return false;
 
        if (!IsTransient() && !compareTo.IsTransient() && Id == compareTo.Id)
            return true;
 
        return false;
    }
 
    public static bool operator ==(Entity a, Entity b)
    {
        if (ReferenceEquals(a, null) && ReferenceEquals(b, null))
            return true;
 
        if (ReferenceEquals(a, null) || ReferenceEquals(b, null))
            return false;
 
        return a.Equals(b);
    }
 
    public static bool operator !=(Entity a, Entity b)
    {
        return !(a == b);
    }
 
    public override int GetHashCode()
    {
        return (GetRealType().ToString() + Id).GetHashCode();
    }
 
    public virtual bool IsTransient()
    {
        return Id == 0;
    }
 
    public virtual Type GetRealType()
    {
        return NHibernateUtil.GetClass(this);
    }
}

Каждый класс сущностей, наследует от него.

Это небольшое изменение кода здесь: https://github.com/vkhorikov/DddInAction/blob/master/DddInPractice.Logic/Common/Entity.cs

Я пытаюсь решить, следует ли удалить эту базу типа сущности из моего приложения, потому что обратной связи я получил, когда говорю об этом.

Это нормально иметь базовый тип лица (и базового объекта value этого), который имеет базовую реализацию для сравнения, например, объект.Равных, IEquality.Равно и т. д.?

Это кажется мне логичным. Скажем, у меня есть следующие сущности:

Customer
Supplier
Product
Production
etc

Почему это плохая идея для них все надо сравнивать по ID по умолчанию?

У меня есть отдельная модель и модель данных домен, если это имеет какое-либо отношение.



147
1
c#
задан 30 января 2018 в 09:01 Источник Поделиться
Комментарии