Я пытаюсь динамически отображать объекты в EF Core.Поэтому вместо того, чтобы указывать множественные отношения явно в dbcontext, я пытаюсь сделать это с помощью отражения.Итак, у меня пока есть это:
var props = modelBuilder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.IsForeignKey());
foreach (var prop in props)
{
var name = prop.Name.Split(new[] { "Id" }, StringSplitOptions.None)[0];
var parentTableType = prop.DeclaringEntityType.ClrType
.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
.Where(f => f.FieldType != typeof(long))
.First(f => f.Name.Contains(name))
.FieldType;
var childTableType = prop.DeclaringEntityType.ClrType
.GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
.Where(f => f.FieldType == typeof(long))
.First(f => f.Name.Contains("Id"))
.DeclaringType;
}
Так что это работает, как я ожидаю, я получаю Type
каждой из таблиц.Теперь проблема приходит, когда я пытаюсь создать отношения.Type
из этих двух таблиц, очевидно, являются переменными, поэтому я не могу использовать их как явные Type
, как указано ниже:
modelBuilder.Entity<parentTableType>()
.HasMany<childTableType>();
Есть ли способ преобразовать переменные в конкретные типы во время выполнения дляпозвольте вышеупомянутому случиться, или я трачу свое время, пытаясь сделать это?