【问题标题】:No automapping and schema creation with Fluent NHibernate: I can't figure out what's wrong使用 Fluent NHibernate 没有自动映射和模式创建:我不知道出了什么问题
【发布时间】:2011-01-18 11:43:11
【问题描述】:

我不明白为什么 Fluent NHibernate 自动映射和模式生成不起作用。

我有这个代码:

    return Fluently
    .Configure()
    .Database
    (
        MsSqlConfiguration.MsSql2005.ConnectionString
        (
            c => c.FromConnectionStringWithKey("dataAccess")
        )
    )
    .Mappings(config => config.AutoMappings.Add(AutoMap.Assembly(ObjectsAssembly, new ORMAutoMappingConfiguration())))
    .ExposeConfiguration(config => new SchemaExport(config).Create(true, true))
    .BuildSessionFactory()
    .OpenSession();

还有:

public sealed class ORMAutoMappingConfiguration : DefaultAutomappingConfiguration
{
    public override bool ShouldMap(Member member)
    {
        return member.DeclaringType.IsSubclassOf(typeof(DomainObject));
    }
}

未创建数据库和映射。

“ObjectsAssembly”是一个属性,我看过它,我可以确定这是正确的程序集,它具有继承 DomainObject 的域对象。

另一件事是,在此过程中从不需要自动映射配置类,FNH 不会调用 ShouldMap。

怎么了?

谢谢。

【问题讨论】:

  • 啊,数据库连接正常,打开了一个连接。

标签: c# .net nhibernate fluent-nhibernate


【解决方案1】:

不能说您的自动映射出了什么问题,但要使用您需要的架构生成

var schema = new SchemaExport(configuration);
schema.Create(true, true);

【讨论】:

  • 我让它工作了,有一个非常愚蠢的问题......请参阅我的自动映射配置实现:它实现了 ShouldMap(Member) 重载而不是 ShouldMap(Type) 一个。什么问题?任何类型都将被映射,而 FNH 未能做到这一点,因为并非该程序集中的所有类型都是域对象。还是谢谢你!!
【解决方案2】:

遗憾的是,这是一个非常容易解决的问题!我正在覆盖 ShouldMap(Member) 而不是 ShouldMap(Type) 重载。

任何类型都将被映射,这是错误的,因为并非所有类型都是域对象。

我的域模型和数据库正在运行!

还是谢谢你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多