如何映射在功能NHibernate保护收藏?(How do I map a protected co

2019-06-25 23:44发布

我已经使用揭示流利的财产试过,但我不能让它与集合编译。 我想我在一个实体的集合中的一个被保护,而不是除了在实体本身的任何地方访问。 这可能吗? 谢谢

编辑:

下面是我想要使用的代码,

HasMany<Trip>(x => Reveal.Property<Trip>("_trips"));

我也试过这个代码为好,

HasMany<Trip>(Reveal.Property<Organization>("_trips"));

每次我的应用程序运行时,NHibernate的说,它无法映射到“属性”,或者抛出未知异常。

Answer 1:

假定组织具有的IList <行程>的

HasMany<Trip>(Reveal.Property<Organization>("_trips"));

代码应工作。 检查它的一个属性,你有保护的getter和setter方法(士兵将无法工作,因为NHibernate的将要代理的惰性加载的集合)。



Answer 2:

最简单的答案就是让受保护的内部虚拟财产的映射。 这是NHibernate的流利的文档文件 。

  1. 去你的AssemblyInfo.cs(下性能)文件,并添加以下内容: [assembly: InternalsVisibleTo("MyDomain.mapping")]其中的字符串是映射的命名空间。
  2. 创建一个受保护的内部虚声明属性。

      protected internal virtual IList<Clinician> __AppointmentMemberAttendees { get; set; } 
  3. 地图项目就像正常的。

      HasManyToMany(x => x.__AppointmentMemberAttendees) .Table("__AppointmentToAttendeesMember") .Cascade.None(); 


文章来源: How do I map a protected collection in Fluent NHibernate?