C# 为了能够与NHibernate正常工作,类应该遵循哪些规则和约定?

C# 为了能够与NHibernate正常工作,类应该遵循哪些规则和约定?,c#,.net,nhibernate,poco,mygeneration,C#,.net,Nhibernate,Poco,Mygeneration,我正在使用代码模板从我的Db模式创建POCO 是否有一种摘要列表,它定义类中必须包含的内容,以便可以使用NHibernate将其映射到Db而不会出现任何问题 (据我所知,其中一条规则是让您的属性为虚拟,以便NHibernate代理可以覆盖) 谢谢 除了虚拟属性之外,您还必须: 具有无参数构造函数,即使私有/受保护 具有标识对象(通常是表的主键)的属性(或属性组合) 重写int GetHashCode()和bool Equals(object obj),方法是在它们的主体中使用前面提到的对象标识

我正在使用代码模板从我的Db模式创建POCO

是否有一种摘要列表,它定义类中必须包含的内容,以便可以使用NHibernate将其映射到Db而不会出现任何问题

(据我所知,其中一条规则是让您的属性为虚拟,以便NHibernate代理可以覆盖)


谢谢

除了
虚拟
属性之外,您还必须:

  • 具有无参数构造函数,即使
    私有/受保护
  • 具有标识对象(通常是表的主键)的属性(或属性组合)
  • 重写
    int GetHashCode()
    bool Equals(object obj)
    ,方法是在它们的主体中使用前面提到的对象标识符

那么,除了
虚拟
属性之外,您还必须:

  • 具有无参数构造函数,即使
    私有/受保护
  • 具有标识对象(通常是表的主键)的属性(或属性组合)
  • 重写
    int GetHashCode()
    bool Equals(object obj)
    ,方法是在它们的主体中使用前面提到的对象标识符

我没有直接使用NHibernate。相反,我使用CastleActiveRecord,它是一个包装器,完全是声明性的。我可以告诉你,ActiveRecord不需要对代码进行任何更改就可以工作。我不是直接使用NHibernate。相反,我使用CastleActiveRecord,它是一个包装器,完全是声明性的。我可以告诉你,ActiveRecord不需要对代码进行任何更改就可以工作。