来自不同程序集的流畅的nhibernate automap子类

时间:2010-01-16 15:15:21

标签: c# nhibernate fluent-nhibernate mapping automapping

我需要做的是自动化抽象页面类的子类。我需要在我得到运行时的程序集列表中找到它们(在初始化阶段)。我没有对映射程序集中的程序集进行任何引用。

我的页面类看起来像这样:

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或其他内容。但页面类已经映射,所以我得到了这个错误。这是我的猜测。有谁知道我是否可以以任何方式解决这个问题?或者知道解决方案?

1 个答案:

答案 0 :(得分:1)

我刚刚找到this链接。似乎这是不可能的。

修改

现在使用最后一个流利的nhibernate版本修复了这个问题。