Я создаю универсальный класс для заполнения базы данных сущностями, необходимыми для интеграционных тестов.Я могу создавать отдельные объекты, но когда одно зависит от другого, я должен вручную дать указание своему классу сначала создать родительский объект, а затем продолжить.Я пытаюсь сделать это обнаружение автоматическим, получая из определения модели список свойств навигации с кратностью 0 или 1 (справочные свойства навигации), как только это будет сделано, рекурсивно мой класс будет вызывать себя для создания родительских объектов вначале (циклические зависимости).здесь находятся вне области видимости).
Раньше я делал это в EF для .net Framework, но EF Core сильно изменился.Чего мне не хватает в EF Core, так это RelationshipMultiplicity , я не могу найти никаких ссылок на Multiplicity в официальной документации, и даже в случае, если хакерское решение - проверить, является ли свойство навигации коллекцией, я бы хотелу меня больше контроля и все просто.
До сих пор я изучаю определение модели, используя:
var modelData = _context.Model.GetEntityTypes()
.Select(t => new
{
t.ClrType.Name,
DerivedNavigationProperties = t.FindDerivedNavigations(t.ClrType.Name),
DefiningNavigationProperties = t.FindDefiningNavigation(),
DeclaredForeignKeys = t.GetDeclaredForeignKeys(),
DeclaredNavigations = t.GetDeclaredNavigations(),
DerivedNavigations = t.GetDerivedNavigations(),
DerivedNavigationsInclusive = t.GetDerivedNavigationsInclusive(),
Navigations = t.GetNavigations() // This returns all Navigation Properties (INavigation)
});