У меня есть следующая модель.
interface IKeywordedEntity
{
IEntityCollection<Keyword> Keywords { get; }
}
class Foo : EntityBase, IKeywordedEntity
{
public virtual IEntityCollection<Keyword> Keywords { get { ... } }
}
class Bar : EntityBase, IKeywordedEntity
{
public virtual IEntityCollection<Keyword> Keywords { get { ... } }
}
Я хочу написать метод расширения, который автоматически обрабатывает ключевые слова для каждого из них в OnModelCreating
.
public static void WithKeywords<TEntityType>(this EntityTypeConfiguration<TEntityType>
entityTypeConfiguration) where TEntityType : EntityBase, IKeywordedEntity
{
entityTypeConfiguration.HasMany(e => e.Keywords).WithMany();
}
Итак, я вызываю это так в OnModelCreating
.
modelBuilder.Entity<Foo>.WithKeywords();
modelBuilder.Entity<Bar>.WithKeywords();
Однако я получаю следующее исключение:
Свойство навигации «Ключевые слова» не является объявленным свойством типа
'Foo'. Убедитесь, что он не был явно исключен из модели
и что это допустимое свойство навигации.
Что я могу сделать, чтобы этот метод расширения работал?