C# FluentNhibernate+;专用设备

C# FluentNhibernate+;专用设备,c#,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我正在对私有集使用auto属性,fluentNhibernate为我抛出一个错误 FluentNHibernate.Cfg.FluentConfigurationException:创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和InnerException。 *未通过数据库方法配置数据库 这是我的班级: public class MyClass { public virtual int Id { get; set; } public

我正在对私有集使用auto属性,fluentNhibernate为我抛出一个错误

FluentNHibernate.Cfg.FluentConfigurationException:创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和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);
    }
}
FN运行良好

但我读过这个主题:“访问策略”,我一直在做类似的主题。我哪里错了

我在GitHub中举了一个例子:

下面是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());
        }
Configuration=newconfiguration().Configuration();
var fluentConfiguration=fluent.Configuration(配置)
.Mappings(x=>x.FluentMappings.AddFromAssemblyOf());
尝试
{
NHSession=fluentConfiguration.BuildSessionFactory();
}
捕获(例外情况除外)
{
Console.WriteLine(例如ToString());
}

这可能是FluentNH中的一个bug引发了错误的异常,但该异常与映射本身无关,而与构建SessionFactory有关。
请向我们展示代码,确保您正在通过
.Database(..)
call设置DB驱动程序及其配置我在FluentNhibernate项目上提出了一个问题,正确的方法是使用带有字段的私有集。如果使用自动属性,则权限是使用非私有setter

这项工作很好:

private string name;

public string Name
{
  get { return name; }
}

根据这一点,自v.起,NHibernate似乎不再支持这种访问策略。3.3. 你链接到的文档也让我误入歧途。可能应该更新它们,以注意NHibernate 3.2之后不支持此场景

您好@migajek,我在这里举了一个例子:github.com/wbaldanw/NhAccessStrategies
private string name;

public string Name
{
  get { return name; }
}