Что мне нужно сделать, так это подклассы автомата моего абстрактного класса страницы. Мне нужно найти их в списке сборок, которые я получаю во время выполнения (на этапе инициализации). У меня нет никаких ссылок на сборки из сборки моих сопоставлений.
Мой класс страницы выглядит примерно так:
public abstract class Page : EntityBase
{
public virtual int Id { get; protected set; }
public virtual Page Page { get; set; }
//Other properties
}
Мои сопоставления выглядят так:
var persistenceModel = new AutoPersistenceModel();
_assemblies.ForEach(x => persistenceModel.AddEntityAssembly(x));
persistenceModel.Setup(x =>
{
x.SubclassStrategy = y => SubclassStrategy.Subclass;
x.DiscriminatorColumn = y => "Type";
})
.IncludeBase(typeof(Page))
.OverrideAll(x => x.IgnoreProperties(y => typeof(Page)
.IsAssignableFrom(y.ReflectedType) && y.ReflectedType != typeof(Page)))
.Where(y => typeof(EntityBase).IsAssignableFrom(y));
_assemblies - это список сборок для поиска отображаемых сущностей. Он содержит сборку моего класса страницы, а также одну или несколько других сборок, каждая из которых имеет ссылку на базовую сборку (ту, что с моим классом страницы).
Когда я добавляю класс, который наследуется от моего класса страницы, в ту же сборку, что и мой класс страницы, все работает нормально и соответствующим образом отображается. Но если я добавлю одну из других сборок, загружаемых во время выполнения, у меня возникнут проблемы. Я получаю такую ошибку:
«Пытался добавить" страницу "многие к одному, когда она уже была добавлена».
Он находит класс, но по какой-то причине пытается сопоставить его как страницу или что-то в этом роде. Но класс страницы уже сопоставлен, поэтому я получаю эту ошибку. Это мое предположение. Кто-нибудь знает, могу ли я как-нибудь обойти это? Или знаете решение?