【问题标题】:FluentNhibernate + private setFluentNhibernate + 私有集
【发布时间】:2014-01-02 12:11:42
【问题描述】:

我正在使用带有私有集的自动属性,而 fluentNhibernate 为我抛出一个错误...

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

这是我的课:

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());
        }

【问题讨论】:

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


    【解决方案1】:

    根据question and answer,从 v. 3.3 开始,NHibernate 似乎不再支持此访问策略。您链接到的文档也使我误入歧途。他们可能应该更新以注意 NHibernate 3.2 之后不支持这种情况。

    【讨论】:

      【解决方案2】:

      我在 FluentNhibernate 项目上提出了一个问题,正确的是使用带字段的私有集。如果使用 autoproperties 权限是使用非私有 setter。

      这项工作很好:

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

      【讨论】:

        【解决方案3】:

        这可能是 FluentNH 中的一个错误抛出误导性异常,但此异常与映射本身无关,而是与构建 SessionFactory。 请向我们展示代码,确保您通过.Database(..)调用设置数据库驱动程序和配置

        【讨论】:

        • 嗨@migajek,我在这里举了一个例子:github.com/wbaldanw/NhAccessStrategies
        猜你喜欢
        • 2011-02-20
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多