Я работаю над реализацией шаблона хранилища в 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);
}
Я надеюсь, что проблема довольно проста, я не знаю, как включить эту сущность, используя базовый класс сущностей, каждая идея, которую я получаю, звучит как массивная анти-шаблон.