"Была предпринята попытка lazy-load для свойства навигации« Box »на отдельном объекте типа« AppleProxy ». Lazy-loading не поддерживается для отдельных объектов или объектов, которые загружены с помощью« AsNoTracking () »."
Но я никогда не использую AsNoTracking или вызываю detach для сущностей.
Я написал быстрый тест:
using var db = new DatabaseContext();
{
var b= db.Box.Find(boxId);
Assert.NotNull(b.Apples);
}
Но это не удалось. Это мои модели:
public class Apple
{
public int BoxID { get; set; }
public virtual Box Box { get; set; }
public int Number { get { return (int)V2.X; } set { V2 = new Vector2(value, 0); } }
public Vector2 V2 {get;set;}
}
public class Box : IEnumerable<Apple>
{
[Key]
public int ID { get; set; }
public virtual ICollection<Apple> Apples { get; set; }
public IEnumerator<Apple> GetEnumerator()
{
return Apples.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return Apples.GetEnumerator();
}
}
Контекст:
public DbSet<Apple> Apples { get; set; }
public DbSet<Box> Boxes { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseLazyLoadingProxies();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Apple>()
.HasOne(a => a.Box)
.WithMany(a => a.Apples)
.IsRequired();
modelBuilder.Entity<Apple>()
.Ignore(a => a.V2)
.HasKey(a => new { a.BoxID, a.Number });
}