我需要做的是自动化抽象页面类的子类。我需要在我得到运行时的程序集列表中找到它们(在初始化阶段)。我没有对映射程序集中的程序集进行任何引用。
我的页面类看起来像这样:
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是一个用于搜索可映射实体的程序集列表。它包含我的页面类的程序集以及一个或多个其他程序集,这些程序集都引用了基本程序集(带有我的页面类的程序集)。
当我将从我的页面类继承的类添加到与我的页面类相同的程序集时,一切正常并且映射得恰当。但是,如果我在运行时加载其中一个其他程序集,我会遇到问题。我收到这个错误:
“尝试在添加时添加多对一'Page'。”
它找到了类,但由于某种原因尝试将其映射为Page或其他内容。但页面类已经映射,所以我得到了这个错误。这是我的猜测。有谁知道我是否可以以任何方式解决这个问题?或者知道解决方案?