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/EF查询惰性地填充ChildRequests
,因此直到您迭代它们(这是作为First
方法的一部分完成的)才创建对象。此时,EF尝试使用不存在的无参数构造函数创建实例。
得到的错误非常明显。您没有定义无参数构造函数。
public class SLR : BaseEntity
{
public SLR() : base
{
}
// ...
public virtual ICollection<SLRD> ChildRequests { get; set; }
}
发生这种情况的原因是基类可能有一个无参数构造函数。因此,您必须为派生类SLR
定义一个。