NHibernate非静态方法需要一个目标错误消息解决方案

时间:2011-10-08 07:17:50

标签: nhibernate reflection fluent-nhibernate

我从NHibernate收到以下错误消息。我搜索并没有找到这个错误的明确解决方案。我偶然发现了一个解决方案,并认为我会分享。我的问题结果是我需要为类定义一个默认构造函数(一个不接受参数的构造函数):

public class Staff : Entity, IStaff
{
    public virtual int StaffId { get; set; }

    protected virtual internal Case Case { get; set; }

    protected virtual internal Person Person { get; set; }

    protected Staff() {}  // Define this constructor for NHibernate

    public Staff(Person person)
    {
        Person = person;
    }
}

回顾过去,当我将构造函数添加到接受Person参数的类时,我的问题就开始了。 C#定义了一个默认构造函数,但仅在您没有定义任何构造函数时。定义构造函数后,必须显式定义默认构造函数:

如果类具有构造函数,则会自动生成默认构造函数,并使用默认值初始化对象字段。 http://msdn.microsoft.com/en-us/library/k6sa6h87.aspx

我发现这是因为我有一个类似的类,我已经为那个定义了一个默认构造函数,因为我需要一个没有参数的代码。

错误堆栈跟踪:

System.Reflection.TargetException occurred
  Message=**Non-static method requires a target**...
  Source=mscorlib

NHibernate.PropertyAccessException occurred
   Message=**could not set a property value by reflection setter** of
  *YourClassPropertyNameHere* ...
  Source=NHibernate
  StackTrace:
     at NHibernate.Properties.BasicPropertyAccessor.BasicSetter.Set(Object target, Object value) 

0 个答案:

没有答案