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());
}
我在Fluenthibernate项目上提出了一个问题,正确的做法是使用带有字段的私有集。若使用自动属性的权限是使用非私有的setter。
这项工作很好:
private string name;
public string Name
{
get { return name; }
}
根据这个问答,自3.3版起,NHibernate似乎不再支持这种访问策略。你联系的医生也把我引入歧途。它们可能应该更新,以注意在NHibernate 3.2之后不支持这种情况。
这可能是FluentNH中的一个错误,引发了误导性异常,但此异常与映射本身无关,而是与构建SessionFactory有关。请给我们看代码,确保您正在设置DB驱动程序&它的配置通过.Database(..)
调用