任何人都可以证实这不能按预期工作,因为我得到一个错误,它试图访问属性,而不是尝试访问字段。FluentNHibernate - ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
private IList<MetaPackage> _metaPackages;
public virtual IEnumerable<MetaPackage> MetaPackages
{
get
{
return _metaPackages;
}
}
流利的映射
HasMany<MetaPackage>(x
=>x.MetaPackages).Table("dnnSphere_Package").KeyColumn("Id")
.Inverse().LazyLoad().Cascade.AllDeleteOrphan()
.Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
单元测试
new PersistenceSpecification<MetaProject>(Session)
.CheckProperty(x => x.Name, "Test")
.CheckProperty(x => x.Description, "Description")
.CheckList(x=>x.MetaPackages, new List<MetaPackage> { new
MetaPackage ("name")})
.VerifyTheMappings();
错误:
它抛出一个错误,它无法找到的属性设置,即使它应该走线槽场,因为它是只读属性。
System.ArgumentException: Property set method not found. at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index) at FluentNHibernate.Testing.PersistenceSpecification
1.ListValue
1.SetValue(Ob ject target) in E:\Users\epitka\Documents\DEVELOPMENT\fluent- nhibernate\src\FluentNHibernate\Testing\PersistenceSpecification.cs: line 174
如果如果交换机策略使用ReadOnlyPropertyTrhoughPascalCaseField它正确地抛出这个错误:
NHibernate.PropertyNotFoundException: Could not find field '_MetaPackages' in class 'dnnSphere.Meta.Model.MetaProject'
如此看来,ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)不正确映射它的财产而不是到现场。