15c58522ef
- replace EfRepository/BaseDbContext/UtcValueConverter with BaseEfRepository and BaseRepository - add IEfRepository interface hierarchy - consolidate IEntity into Entity.cs, remove standalone IEntity.cs - add PagedResult - adjust all namespaces to HrynCo.DAL.Abstract / HrynCo.DAL.EF - add README.md with solution overview, versioning rules, class diagram - add AGENTS.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
68 lines
1.2 KiB
C#
68 lines
1.2 KiB
C#
namespace HrynCo.DAL.Abstract.Entities;
|
|
|
|
public interface IEntity
|
|
{
|
|
DateTimeOffset Created { get; set; }
|
|
object Id { get; set; }
|
|
DateTimeOffset? Updated { get; set; }
|
|
}
|
|
|
|
public interface IEntity<TId> : IEntity where TId : struct
|
|
{
|
|
new TId Id { get; set; }
|
|
}
|
|
|
|
[Serializable]
|
|
public class Entity<TId> : IEntity<TId> where TId : struct
|
|
{
|
|
protected Entity()
|
|
{
|
|
}
|
|
|
|
public Entity(TId id)
|
|
{
|
|
Id = id;
|
|
}
|
|
|
|
public TId Id { get; set; }
|
|
|
|
object IEntity.Id
|
|
{
|
|
get => Id;
|
|
set
|
|
{
|
|
if (value is TId typedValue)
|
|
{
|
|
Id = typedValue;
|
|
}
|
|
else
|
|
{
|
|
throw new InvalidCastException($"Cannot cast value of type {value.GetType()} to {typeof(TId)}.");
|
|
}
|
|
}
|
|
}
|
|
|
|
public DateTimeOffset Created { get; set; }
|
|
public DateTimeOffset? Updated { get; set; }
|
|
}
|
|
|
|
[Serializable]
|
|
public abstract class Entity : Entity<Guid>
|
|
{
|
|
protected Entity()
|
|
{
|
|
Id = Guid.NewGuid();
|
|
}
|
|
|
|
protected Entity(Guid id)
|
|
: base(id)
|
|
{
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public abstract class NamedEntity : Entity
|
|
{
|
|
public required string Name { get; set; }
|
|
}
|