我有一个类方法GetMS()
,如下所示,但是当调用该方法时,我得到一个错误,指出'SLRD' has no parameterless constructor.
我不明白为什么甚至无法调用无参数构造函数。这有什么不对?
public class SLR : BaseEntity
{
// ...
public virtual ICollection<SLRD> ChildRequests { get; set; }
}
public SLRD GetMS()
{
return ChildRequests.First(c => c.Type == SLRTypes.MS);
}
答案 0 :(得分:5)
我不明白为什么甚至会调用无参数构造函数。
我的猜测是你通过Linq / EF查询懒洋洋地填充ChildRequests
,因此在迭代它们之前不会创建对象(这是作为First
方法的一部分完成的)。此时,EF尝试使用不存在的无参数构造函数创建实例。
答案 1 :(得分:3)
你得到的错误非常清楚。您错过了定义无参数构造函数。
public class SLR : BaseEntity
{
public SLR() : base
{
}
// ...
public virtual ICollection<SLRD> ChildRequests { get; set; }
}
发生这种情况的原因是您的基类可能具有无参数构造函数。因此,您必须为派生类SLR
定义一个。