FluentNhibernate + private set

本文关键字:set private FluentNhibernate | 更新日期: 2024-09-25 04:10:58

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

FluentHibernate。Cfg.FluentConfiguration异常:创建会话工厂时使用了无效或不完整的配置。有关详细信息,请查看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 set

我在Fluenthibernate项目上提出了一个问题,正确的做法是使用带有字段的私有集。若使用自动属性的权限是使用非私有的setter。

这项工作很好:

private string name;
public string Name
{
  get { return name; }
}

根据这个问答,自3.3版起,NHibernate似乎不再支持这种访问策略。你联系的医生也把我引入歧途。它们可能应该更新,以注意在NHibernate 3.2之后不支持这种情况。

这可能是FluentNH中的一个错误,引发了误导性异常,但此异常与映射本身无关,而是与构建SessionFactory有关。请给我们看代码,确保您正在设置DB驱动程序&它的配置通过.Database(..)调用