Базовое ядро ​​Entity Framework OnModelCreating (ModelBuilder modelBuilder) - PullRequest
0 голосов
/ 14 мая 2018

Я хотел бы получить Type сущностей, которые реализуют определенный интерфейс. Я хочу получить это внутри метода OnModelCreating.

Пример Предположим, что у меня есть следующая сущность

public class Product : IProductBase {
   public int ProductId {get;set;}
}

У меня также есть объект, который не реализует IProductBase, например:

Public class ProductInventory {
  public int Id {get;set;}
}

В следующем onModelCreating я хочу иметь возможность извлечь все Type(s) сущностей, которые реализовали интерфейс IProductBase.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{


}

Я пробовал несколько вещей, таких как попытка получить тип ClrType. Но это не похоже на работу.

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете выполнять итерации сборок и получать все объекты типа IProductBase.

using System;
using System.Linq;

var type = typeof(IProductBase ); 
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p));

По предложению @Ivan Stoev. Вы также можете использовать метод ниже, чтобы получить все объекты. Спасибо @Ivan за ваши ценные предложения.

var type = modelBuilder.Model.GetEntityTypes(typeof(FullAuditedEntity));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...