LINQ错误:"没有无参数构造函数."

本文关键字:quot 构造函数 参数 错误 LINQ object | 更新日期: 2023-09-27 18:04:14

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

LINQ错误:"<object>没有无参数构造函数."

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

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

得到的错误非常明显。您没有定义无参数构造函数。

public class SLR : BaseEntity
{
    public SLR() : base
    {
    }
    // ...
    public virtual ICollection<SLRD> ChildRequests { get; set; }
}

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