我正在使用带有私有集的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());
        }

最佳答案

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

这项工作正常:

private string name;

public string Name
{
  get { return name; }
}

关于c# - FluentNhibernate +私有(private)套装,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20588293/

10-09 07:26