3

我正在尝试使用 fluent package配置NHibernate包。以下代码: id="NHibernate" version="4.0.0.4000" targetFramework="net451"id="FluentNHibernate" version="2.0.1.0" targetFramework="net451"

var sessionFactory = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory)
.Mappings(m =>
{
    m.FluentMappings
    .AddFromAssemblyOf<ExampleSagaMap>();
)
.ExposeConfiguration(cfg =>
{
    chemaExport = new SchemaExport(cfg);
})
.BuildSessionFactory();

地图代码:

public ExampleSagaMap()
{
    Not.LazyLoad();

    Id(x => x.CorrelationId).GeneratedBy.Assigned();

    Map(x => x.CurrentState)
        .Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
        .CustomType<StateMachineUserType>();

    Map(x => x.MessagesReceived);
    Map(x => x.MessagesSent);
}

错误 :

创建 SessionFactory 时使用了无效或不完整的配置。检查 PotentialReasons 集合和 InnerException 了解更多详细信息。

内部错误:{“未找到字段:'NHibernate.NHibernateUtil.String'。”}

有人可以帮忙吗。谢谢

4

1 回答 1

0

IUserType在我的情况下,我收到了这个错误,因为我已经使用引用实现了一个自定义枚举类型NHibernateUtil.String.SqlType

解决方案是改用新的SqlTypeFactory

/* Used by NHibernate to cast between string and type-safe-enum */
public class MyCustomEnumType : IUserType
{

    ...

    public SqlType[] SqlTypes
    {
        get { 
            return new[] {                   
                // not working for NHibernate 4.1
                //NHibernateUtil.String.SqlType 
                SqlTypeFactory.GetString(200)
            }; 
        }
    }        

    ...
}
于 2017-01-12T14:49:03.080 回答