【问题标题】:Custom Fluent NHibernate maps not working with AutoMapping自定义 Fluent NHibernate 地图不适用于 AutoMapping
【发布时间】:2011-12-10 22:45:54
【问题描述】:

我遇到了 Fluent NHibernate AutoPersistenceModelGenerator 的问题。它不想拾取自定义地图。

使用 Sharp Architecture 2.0、Fluent NHibernate 1.2 和 NHibernate 3.1。

我目前的相关配置如下:

    public AutoPersistenceModel Generate()
    {
        // This mappings group works with the exception of custom maps!!
        var mappings = AutoMap.AssemblyOf<SecurableEntity>(new AutomappingConfiguration());
        mappings.Conventions.Setup(GetConventions());
        mappings.IgnoreBase<Entity>();
        mappings.IgnoreBase<SecurableEntity>();
        mappings.IgnoreBase(typeof(EntityWithTypedId<>));
        mappings.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();

        //mappings.UseOverridesFromAssemblyOf<UserMap>(); // Should call Override method of UserMap, but doesn't appear to...
        mappings.Override<User>(new UserMap().Override()); // This hack fixes the issue with calling the Override method of UserMap.
        mappings.UseOverridesFromAssemblyOf<UserMap>();

        return mappings;
    }

class UserMap : IAutoMappingOverride<User>
{
    public void Override(AutoMapping<User> mapping)
    {
        //mapping => mapping.Table("Users");
        mapping.Table("Users");
    }

    public Action<AutoMapping<User>> Override()
    {
        return map =>
            {
                map.Table("Users");
            };
    }
}

我尝试对配置进行各种修改,并在 Fluent NHibernate 上翻阅互联网文章,但无济于事。我有一个使用 Sharp Arch 1.x 的工作版本,以及早期版本的 NHibernate 和 Fluent。我假设我缺少的语法发生了变化。任何和所有的帮助将不胜感激。

谢谢! 约翰

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping sharp-architecture


    【解决方案1】:

    Fluent NHibernate 使用Assembly.GetExportedTypes() method 从给定程序集中获取所有覆盖。正如此方法的文档所述,它获取在此程序集中定义的 public 类型,这些类型在程序集之外可见。您的覆盖是隐含的内部。只需在class UserMap 之前添加public 即可。

    【讨论】:

    • 哇,我为此道歉。很难相信我做了这么久却没有注意到缺少的公共访问修饰符......
    • 如果您觉得答案有帮助,请点赞。如果它解决了您的问题,请将其标记为答案。谢谢!
    • 一个非常有帮助的答案。 Conventions.AddFromAssemblyOf 可以很好地处理内部类型,所以我永远不会认为 UseOverridesFromAssemblyOf 做不到。这是相当不一致的。
    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多