#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");
}