C# Fluent NHibernate自动映射配置抛出模糊错误

C# Fluent NHibernate自动映射配置抛出模糊错误,c#,fluent-nhibernate,automapping,C#,Fluent Nhibernate,Automapping,我正在尝试Fluent NHibernate的自动映射功能,当我尝试将其移动到自动映射时,构建会话工厂时,与显式ClassMap配置相同的代码失败 代码如下: public static ISessionFactory GetSessionFactory() { if (_sessionFactory == null) { _sessionFactory = Fluently.Configure() .Database(MsSqlConfi

我正在尝试Fluent NHibernate的自动映射功能,当我尝试将其移动到自动映射时,构建
会话工厂时,与显式
ClassMap
配置相同的代码失败

代码如下:

public static ISessionFactory GetSessionFactory()
{
    if (_sessionFactory == null)
    {
        _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("DB")))
            // It works with the following:
            // .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Customer>())
            // It fails with this:
            .Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Customer>()))
            .BuildSessionFactory();

    return _sessionFactory;
}
公共静态ISessionFactory GetSessionFactory()
{
if(_sessionFactory==null)
{
_sessionFactory=fluntly.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c=>c.FromConnectionStringWithKey(“DB”))
//它与以下各项协同工作:
//.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
//它在以下方面失败:
.Mappings(m=>m.AutoMappings.Add(AutoMap.AssemblyOf()))
.BuildSessionFactory();
返回工厂;
}
我得到的错误是:

无效或不完整的配置 在创建 会话工厂。检查潜在原因 集合,以及的InnerException 更多细节

我得到
Count=0
的原因是
潜在的原因
,内部异常与上面相同

stacktrace指的是:

在FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()中 在d:\Builds\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs中:第113行

似乎我已经尽了一切努力让它工作,最近的一次是我进行了初始化工作,但当我尝试使用会话时,却出现了一个“
找不到…”
的持久器错误,我甚至不记得我是如何做到这一点的


我正在使用NHibernate 3.0 SQL 2008数据库的构建版本694。知道我做错了什么吗?

这是一个愚蠢的错误,Aliostad的评论帮我找到了。我在数据库中有一个作为整数存储的枚举类型,NHibernate对此感到窒息。我在设置中添加了如下枚举约定:

_sessionFactory = Fluently.Configure()
    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("DB")))
    .Mappings(
        m =>
        m.AutoMappings.Add(AutoMap.AssemblyOf<Customer>(new AutomapConfiguration()).Conventions.
                               Setup(c =>
                                         {
                                             c.Add<PrimaryKeyConvention>();
                                             c.Add<EnumConvention>();
                                             c.Add<CascadeAllConvention>();
                                         })
                               .IgnoreBase(typeof (EntityBase<>))
                               .OverrideAll(map => map.IgnoreProperty("IsValid"))))
    .BuildSessionFactory();
\u sessionFactory=fluntly.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c=>c.FromConnectionStringWithKey(“DB”))
.映射(
m=>
m、 AutoMappings.Add(AutoMap.AssemblyOf(new AutomapConfiguration())。约定。
设置(c=>
{
c、 添加();
c、 添加();
c、 添加();
})
.IgnoreBase(类型(EntityBase))
.OverrideAll(map=>map.IgnoreProperty(“IsValid”))
.BuildSessionFactory();
以下是枚举约定:

public class EnumConvention : IUserTypeConvention
{
    public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
    {
        criteria.Expect(x => x.Property.PropertyType.IsEnum);
    }

    public void Apply(IPropertyInstance target)
    {
        target.CustomType(target.Property.PropertyType);
    }
}
公共类枚举约定:IUserTypeConvention
{
公共无效接受(IAcceptanceCriteria标准)
{
Expect(x=>x.Property.PropertyType.IsEnum);
}
公共无效应用(IPropertyInstance目标)
{
target.CustomType(target.Property.PropertyType);
}
}

通常有3-4个级别的嵌套内部异常。你都检查过了吗?哇…我现在觉得自己像个白痴!你完全正确-当我深入研究时,我发现这是映射枚举的问题。在我的显式映射中,我只做了一个
自定义类型(typeof(MyEnum))
,但我必须看看在自动映射时如何做到这一点。。。