如何使用流畅的Nhibernate组件

时间:2012-03-14 08:56:02

标签: fluent-nhibernate fluent fluent-nhibernate-mapping

我正在尝试使用流畅的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();
    }

我注意到流利的wiki说这个功能不适用于自动化,因此我明确地使用了.mapping方法,但我不确定这是否足够

欢迎任何想法

GB

1 个答案:

答案 0 :(得分:1)

Component method进行了一些挖掘,如果您的代码尝试使用其功能,那么它需要另一个参数。我不确定为什么它甚至会编译它的编写方式,但它需要两个参数,一个参数用于引用属性,另一个参数描述该参考属性的映射。