Реализация базового класса сущностей, когда не все сущности имеют свойство Id в ASP.NET CORE - PullRequest
1 голос
/ 08 октября 2019

Я работаю над реализацией шаблона хранилища в ASP.NET CORE. По сути, я хочу реализовать интерфейс IRepository таким образом, у него будет больше методов, но это суть. Это довольно стандартно.

public interface IRepository
{
   T GetById<T>(int id) where T : BaseEntity;
   T Add<T>(T entity) where T : BaseEntity;
}

Класс BaseEntity

public abstract class BaseEntity
{
   public int Id { get; set; }
   public List<BaseDomainEvent> Events = new List<BaseDomainEvent>();
}

Здесь я столкнулся со своей проблемой, у меня есть одна таблица «многие ко многим», предназначенная для представления деталей в настоящее время. присваивается несоответствие DiscrepancyPart, генерируемое Entity Core.
Основная проблема, однако, заключается в том, что у него нет свойства Id .

DiscrepancyPart и как он генерируется

public class DiscrepancyPart
{
   public int DiscrepancyId { get; set; }
   public int PartId { get; set; }
   public int Qty { get; set; }
   // Discrepancy
   public Discrepancy Discrepancy { get; set; }
   // Part
   public Part Part { get; set; }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   // Many-to-many relationship between Discrepancy and Part
   modelBuilder.Entity<DiscrepancyPart>()
      .HasKey(bc => new { bc.DiscrepancyId, bc.PartId });
   modelBuilder.Entity<DiscrepancyPart>()
      .HasOne(bc => bc.Discrepancy)
      .WithMany(b => b.DiscrepancyParts)
      .HasForeignKey(bc => bc.DiscrepancyId);
   modelBuilder.Entity<DiscrepancyPart>()
      .HasOne(bc => bc.Part)
      .WithMany(c => c.DiscrepancyParts)
      .HasForeignKey(bc => bc.PartId);
}

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

...