LINQ错误:“<object>没有无参数构造函数。”

时间:2015-07-23 17:37:55

标签: c# linq entity-framework

我有一个类方法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);
}

2 个答案:

答案 0 :(得分:5)

  

我不明白为什么甚至会调用无参数构造函数。

我的猜测是你通过Linq / EF查询懒洋洋地填充ChildRequests,因此在迭代它们之前不会创建对象(这是作为First方法的一部分完成的)。此时,EF尝试使用不存在的无参数构造函数创建实例。

答案 1 :(得分:3)

你得到的错误非常清楚。您错过了定义无参数构造函数。

public class SLR : BaseEntity
{
    public SLR() : base
    {
    }

    // ...
    public virtual ICollection<SLRD> ChildRequests { get; set; }
}

发生这种情况的原因是您的基类可能具有无参数构造函数。因此,您必须为派生类SLR定义一个。