FluentNhibernate +私人套装

时间:2013-12-14 21:08:36

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我正在使用私有设置的auto属性,而fluentNhibernate为我抛出错误...

  

FluentNHibernate.Cfg.FluentConfigurationException:创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合,以及InnerException以获取更多详细信息。    *数据库未通过数据库方法配置。

这是我的班级:

public class MyClass
{
    public virtual int Id { get; set; }
    public virtual string PropOne { get; private set; } 
}

这是我的地图:

public class MyClassMap : ClassMap<MyClass>
{
    public MyClassMap()
    {
        Id(x => x.Id);
        Map(x => x.PropOne);
    }
}

如果我将我的财产改为:

public virtual string PropOne { get; protected set; }, 

FN工作正常。

但我读到了这个主题:https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-mapping“访问策略”,我一直在做这个主题。哪里错了?

我在GitHub中添加了一个示例:https://github.com/wbaldanw/NhAccessStrategies

下面是BuildSession的代码

    Configuration = new Configuration().Configure();
        var fluentConfiguration = Fluently.Configure(Configuration)
            .Mappings(x => x.FluentMappings.AddFromAssemblyOf<MyClassMap>());
        try
        {
            NHSession = fluentConfiguration.BuildSessionFactory();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

3 个答案:

答案 0 :(得分:2)

我在FluentNhibernate项目上提出了一个问题,正确的是使用带字段的私有集。如果正确使用autoproperties则使用非私人设置器。

这项工作很好:

private string name;

public string Name
{
  get { return name; }
}

答案 1 :(得分:1)

根据这个question and answer,似乎NHibernate不再支持这种访问策略,从3.3版开始。你链接的文档也让我误入歧途。应该更新它们以注意NHibernate 3.2之后不支持这种情况。

答案 2 :(得分:0)

这可能是FluentNH中存在误导性异常的错误,但此异常与映射本身无关,而是与构建SessionFactory有关。 请告诉我们代码,确保您正在设置DB驱动程序&amp;通过.Database(..)调用

进行配置