Как мне создать 2 класса, использующие один и тот же Datatable в. net core 3.1 - PullRequest
0 голосов
/ 17 июня 2020

У меня есть таблица данных, которая используется для 2 классов (категория и подкатегория)

В структуре EF edmx позволяет нам установить поле ClassName, и объект будет создан как этот класс.

Допустим, что таблица данных имеет вид

CategoryTable: Id, CategoryId, Name, et c ...

    [Table("Category")]
        public partial class Category
        {        
            public int Id { get; set; }
            public string Name { get; set; }

            public virtual ICollection<Subcategory> Subcategories { get; set; }
        }

    [Table("Category")]
        public partial class Subcategory
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public Nullable<int> CategoryId { get; set; }

            public virtual Category Category { get; set; }
        }

В контексте class

modelBuilder.Entity<Category>(entity =>
            {
                ...

                entity.HasMany(c => c.CategoryClassifications).WithOne(c => c.Category);


            });

При загрузке категорий мне нужны только те, у которых в базе данных не установлен CategoryId. При загрузке подкатегорий мне нужны только те, у которых установлен CategoryId.

Как мне создать связь между категорию (одна) в подкатегории (многие)? Я пробовал использовать соглашение и API-интерфейс Fluant, но всегда получаю сообщение об ошибке: «Невозможно использовать таблицу« Категория »для типа сущности« CategoryClassification », поскольку она используется для типа сущности« Категория »и между их первичными ключами нет связи . '"

Можно ли это сделать в ядре EF. net? Или мне нужно указать условия при загрузке списков?

...