Как исключить свойство всех типов сущностей в конфигурации ядра EF?

#c# #entity-framework-core

Вопрос:

Все мои модели имеют динамическое свойство, называемое RelatedItems . Я хочу динамически игнорировать эти свойства для всех типов сущностей.

Таким образом, я создал базу DatabaseContext для централизации этой конвенции.

 public abstract DatabaseContext : DbContext
{

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var allEntities = modelBuilder.Model.GetEntityTypes();

            foreach (var entity in allEntities)
            {
                entity.Ignore("RelatedItems");
            }
        }
}
 

Но это дает мне эту ошибку:

DatabaseContext.cs(23,24): ошибка CS1061: «IMutableEntityType» не содержит
определения «Игнорировать», и не удалось найти доступный метод расширения «Игнорировать», принимающий первый
аргумент типа «IMutableEntityType»

Как я могу игнорировать свойство во всех моих моделях?

Ответ №1:

 // Get all entities and filter the ones who has the RelatedItems properties
// This filter is not required, but for safety purpose I recomend to use it
// otherwise you could end up getting some weird errors during migration scaffolding
// In my case, without it, the scaffold command alarmed about an Enum that is not even related
var allEntities = modelBuilder.Model.GetEntityTypes()
                                            .Where(x => x.GetProperties().Count(x => x.Name == "RelatedItems") > 0);


foreach (var entity in allEntities)
{
    // Ignore property
    modelBuilder.Entity(entity.Name).Ignore("RelatedItems");
}