我已经使用揭示流利的财产试过,但我不能让它与集合编译。 我想我在一个实体的集合中的一个被保护,而不是除了在实体本身的任何地方访问。 这可能吗? 谢谢
编辑:
下面是我想要使用的代码,
HasMany<Trip>(x => Reveal.Property<Trip>("_trips"));
我也试过这个代码为好,
HasMany<Trip>(Reveal.Property<Organization>("_trips"));
每次我的应用程序运行时,NHibernate的说,它无法映射到“属性”,或者抛出未知异常。
假定组织具有的IList <行程>的
HasMany<Trip>(Reveal.Property<Organization>("_trips"));
代码应工作。 检查它的一个属性,你有保护的getter和setter方法(士兵将无法工作,因为NHibernate的将要代理的惰性加载的集合)。
最简单的答案就是让受保护的内部虚拟财产的映射。 这是NHibernate的流利的文档文件 。
- 去你的AssemblyInfo.cs(下性能)文件,并添加以下内容:
[assembly: InternalsVisibleTo("MyDomain.mapping")]
其中的字符串是映射的命名空间。 创建一个受保护的内部虚接的声明属性。
protected internal virtual IList<Clinician> __AppointmentMemberAttendees { get; set; }
地图项目就像正常的。
HasManyToMany(x => x.__AppointmentMemberAttendees) .Table("__AppointmentToAttendeesMember") .Cascade.None();