Fluent nhibernate 如何在Fluent NHibernate中使主键只读?

Fluent nhibernate 如何在Fluent NHibernate中使主键只读?,fluent-nhibernate,Fluent Nhibernate,当使用Fluent NHinbernate时,我如何使PK只读我试图在setter上使其成为内部PK,但我得到以下结果: ----> NHibernate.InvalidProxy类型异常: 以下类型不能用作 代理:域。地址:方法 set\u AddressId应为 “公共/受保护虚拟”或 “受保护的内部虚拟” 我的映射看起来像: Id(x => x.AddressId).GeneratedBy.Identity(); 你知道怎么做吗?你的财产地址ID应该是受保护的和虚拟的,例如: pu

当使用Fluent NHinbernate时,我如何使PK只读我试图在setter上使其成为内部PK,但我得到以下结果:

----> NHibernate.InvalidProxy类型异常: 以下类型不能用作 代理:域。地址:方法 set\u AddressId应为 “公共/受保护虚拟”或 “受保护的内部虚拟”

我的映射看起来像:

Id(x => x.AddressId).GeneratedBy.Identity();

你知道怎么做吗?

你的财产地址ID应该是受保护的和虚拟的,例如:

public class MyClass
{
  public virtual int AddressId { get; protected set;}
}

您需要使所有方法和属性都虚拟化。前

public virtual int AddressId {get; private set;}
这一切都取决于你的继承路线。声明它为虚拟的原因与模拟类的原因相同。NHibernate需要能够覆盖延迟加载的所有属性