Загрузка связанных данных без ограничения внешнего ключа в ef-core-2.1 - PullRequest
0 голосов
/ 30 мая 2019

Я хочу загрузить данные связанных сущностей Parent, используя шаблон Eager Loading O / RM.Но я не могу указать ограничение ключа foregin для ParentId, потому что оно создает цикл, который не разрешен.В настоящее время я использую внутреннее соединение для явной загрузки Родительских данных.

Вот моя модель предметной области, которую я использую.

[Table("Category")]
public class CategoryDM
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    [Display(Name="Parent")]
    public int ParentId { get; set; }
    [NotMapped]
    public CategoryDM Parent { get; set; }
}

Есть ли способ загрузить связанные объекты, такие какэтот?или любой другой рекомендуемый способ достижения этого.

var result = _context.Category.Include(e => e.Parent);

1 Ответ

1 голос

Это должно работать нормально, вот примерная рабочая модель.

Модель

    public class Category : ISelfRelated<Category>
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string ThumbnailUrl { get; set; }
        public int? ParentId { get; set; }
        public Category Parent { get; set; }
        public IEnumerable<Category> Children { get; set; }
    }

Конфигурация модели

            category.HasOne(c => c.Parent)
                .WithMany(c => c.Children)
                .HasForeignKey(c => c.ParentId)
                .HasPrincipalKey(c => c.Id)
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired(false);
...