Добре, минималисти. ORM, big shit. Как си правите ентититата?
Вариант 1 - всяко ентити си е само по себе си
public class Shit
{
public long Id { get; set; }
public string Colour { get; set; } // mind the gap
public DateTimeOffset CreatedOn { get; set; }
}
Вариант 2.1 - нека сме по- cool, имаме общо между повечето таблици ID-то over and over again? Но това би било проблем при ID= PK & FK или Composite PK, тогава ще пишете ли още интерфейси?
public interface IEntity<TId>
{
TId Id { get; set; }
}
public class Shit : IEntity<long>
{
public long Id { get; set; }
public string Colour { get; set; } // mind the gap
public DateTimeOffset CreatedOn { get; set; }
}
Вариант 2.2 - overkill-вате, но е cool
public interface IEntity<TId>
{
TId Id { get; set; }
}
public abstract class AbstractEntity<TId> : IEntity<TId>
{
public TId Id { get; set; }
// override equals
// override hash
// override ==
// override whatever else
}
public class Shit : AbstractEntity<long>
{
public string Colour { get; set; } // mind the gap
public DateTimeOffset CreatedOn { get; set; }
}
Вариант 2.3 - имате soft delete, delete, ентитита само с createdon, ентитита с createdon + updatedon, etc. и си правите интефейси с или без абстрактни класове.