【发布时间】:2012-03-14 08:56:01
【问题描述】:
我正在尝试在流畅的 nhibernate 中使用组件,但出现以下错误。
FluentNHibernate.Cfg.FluentConfigurationException:创建 SessionFactory 时使用了无效或不完整的配置。查看PotentialReasons 集合和InnerException 了解更多详情。
下面的代码看起来正确还是我遗漏了什么?
下面是我想重用的对象
public class Thickness
{
public string Name { get; set; }
public byte ThicknessSize { get; set; }
}
我已经在我的实体类中实现了它,如下所示
public class Liner
{
public virtual int Id { get; set; }
public virtual Thickness Thickness { get; set; }
}
实体的地图是
public class LinerMap : ClassMap<Liner>
{
public LinerMap()
{
Table("Liner");
Id(l => l.Id);
Component(l => l.Thickness);
}
}
配置如下所示
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c
.Server("XXXXX")
.Database("XXXXX")
.Username("XXXXXXXXXX")
.TrustedConnection()))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Liner>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Thickness>())
.BuildSessionFactory();
}
我注意到 fluent wiki 说此功能不适用于自动映射,因此我明确使用了 .mapping 方法,但我不确定这是否足够
欢迎任何想法
GB
【问题讨论】:
-
您是否查看过 InnerException(可能还有其他 InnerExceptions)?堆栈跟踪中通常隐藏着线索。
-
还可以描述 Component 方法的作用以及它来自什么命名空间。我没有在ClassMap 文档中看到它。
-
您丢失了自动映射,因为您使用的是 CLASSMAP。如果你想获得自动映射,你需要使用 OVERRIDES。
标签: fluent-nhibernate fluent fluent-nhibernate-mapping