gpt4 book ai didi

c# - Fluent NHibernate automap 配置抛出模糊错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:36 26 4
gpt4 key购买 nike

我正在尝试 Fluent NHibernate 的自动映射功能,当我尝试移动时,构建 SessionFactory 时使用显式 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;
}

我得到的错误是:

An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

我得到 Count = 0 for PotentialReasons 并且内部异常与上面相同。

堆栈跟踪是指:

at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Builds\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 113

似乎我已经尝试了一切来让它工作,而我最接近的是让初始化工作只是为了得到一个 Could not find persister for... 错误,当我尝试使用 session ,但我什至不记得我是如何做到这一点的。

我使用的是带有 NHibernate 3.0、SQL 2008 数据库的 #694 版本。知道我做错了什么吗?

最佳答案

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

_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();

这是枚举约定:

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);
}
}

关于c# - Fluent NHibernate automap 配置抛出模糊错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com