如何在Fluent NHibernate中将主键设为只读?

时间:2010-08-18 14:40:36

标签: fluent-nhibernate

使用Fluent NHinbernate时如何制作PK只读我试图将其设置为内置设置器,但我明白了:

  

---->   NHibernate.InvalidProxyTypeException:   以下类型不能用作   代理:Domain.Address:方法   set_AddressId应该是   'public / protected virtual'或   'protected internal virtual'

我的映射看起来像:

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

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您的属性AddressId应该受到保护和虚拟,例如:

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

答案 1 :(得分:0)

您需要将所有方法和属性设为虚拟。实施例

public virtual int AddressId {get; private set;}

这完全取决于你的继承行等等。将其声明为虚拟的原因与模拟类相同。 NHibernate需要能够覆盖延迟加载的所有属性。