【问题标题】:Fluent nhibernate automap subclasses from different assemblies来自不同程序集的流畅的 nhibernate 自动映射子类
【发布时间】:2011-01-05 20:58:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate mapping automapping


    【解决方案1】:

    我刚刚找到this 链接。好像现在还做不到。

    编辑

    这个问题现在在 fluent nhibernate 的最新版本中得到修复。

    【讨论】:

    • 最近根据你的链接修复了。
    • @Mark Rogers,是的,我在上一个发行说明中看到了这一点。我会更新我的答案:)
    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 2013-11-14
    • 2012-05-14
    • 1970-01-01
    • 2010-11-22
    • 2010-12-29
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多