有人能确认这不像预期的那样工作,因为我收到一个错误,它试图访问属性,而不是试图访问字段。
private IList<MetaPackage> _metaPackages;
public virtual IEnumerable<MetaPackage> MetaPackages
{
get
{
return _metaPackages;
}
}Fluent映射
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:属性集方法未找到。在System.Reflection.RuntimePropertyInfo.SetValue(Object obj,Object值,BindingFlags invokeAttr,binder粘合剂,Object[]索引,CultureInfo文化)在System.Reflection.RuntimePropertyInfo.SetValue(Object obj,Object值,Object[]索引)在FluentNHibernate.Testing.PersistenceSpecification
1.ListValue1.SetValue(Ob对象目标)( E:\Users\epitka\Documents\DEVELOPMENT\fluent- nhibernate\src\FluentNHibernate\Testing\PersistenceSpecification.cs:第174行)
如果切换策略使用ReadOnlyPropertyTrhoughPascalCaseField,则正确抛出此错误:
NHibernate.PropertyNotFoundException:在“dnnSphere.Meta.Model.MetaProject”类中找不到“_MetaPackages”字段
因此,ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)似乎错误地将其映射到属性,而不是将其映射到字段。
发布于 2009-09-18 12:18:06
好,在PersistenceSpecification中“问题”是(如果可以称为问题的话)。它与PropertyInfo一起工作,不管它是如何映射的,并且需要属性上的setter。并不理想,但是可以创建私有的setter,以便能够使用PersistenceSpecification进行测试。
发布于 2014-06-03 23:47:22
我也有同样的问题,但我不想使用属性设置器。由于我已经有了一个添加项目的公共方法,所以我做了以下工作:
new PersistenceSpecification<MetaProject>(Session)
.CheckProperty(x => x.Name, "Test")
.CheckProperty(x => x.Description, "Description")
.CheckList(
x => x.MetaPackages,
new List<MetaPackage> { new MetaPackage ("name") },
(MetaProject project, MetaPackage package) =>
{
project.AddPackage(package);
}
.VerifyTheMappings();它似乎只是一个问题与一些过载的CheckList()。
https://stackoverflow.com/questions/1439756
复制相似问题