Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ错误:"&书信电报;对象>;没有无参数构造函数。”;_C#_Linq_Entity Framework - Fatal编程技术网

C# LINQ错误:"&书信电报;对象>;没有无参数构造函数。”;

C# LINQ错误:"&书信电报;对象>;没有无参数构造函数。”;,c#,linq,entity-framework,C#,Linq,Entity Framework,我有一个下面定义的类方法GetMS(),但是当调用该方法时,我得到一个错误,指出'SLRD'没有无参数构造函数。我不明白为什么会调用无参数构造函数。这里怎么了 public class SLR : BaseEntity { // ... public virtual ICollection<SLRD> ChildRequests { get; set; } } public SLRD GetMS() { return ChildRequests.First(

我有一个下面定义的类方法
GetMS()
,但是当调用该方法时,我得到一个错误,指出
'SLRD'没有无参数构造函数。
我不明白为什么会调用无参数构造函数。这里怎么了

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

public SLRD GetMS()
{
    return ChildRequests.First(c => c.Type == SLRTypes.MS);
}
公共类SLR:BaseEntity
{
// ...
公共虚拟ICollection子请求{get;set;}
}
公共SLRD GetMS()
{
返回ChildRequests.First(c=>c.Type==SLRTypes.MS);
}

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

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

    // ...
    public virtual ICollection<SLRD> ChildRequests { get; set; }
}
公共类SLR:BaseEntity
{
公共单反():基
{
}
// ...
公共虚拟ICollection子请求{get;set;}
}
发生这种情况的原因是,您的基类可能有一个无参数构造函数。因此,您必须为派生类定义一个,
SLR

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


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

您知道为什么吗?我很好奇。@Petrichor如果定义了一个非默认构造函数,你只需要定义一个无参数的构造函数,这个问题并没有指出。太好了,我没有意识到我可以创建一个空构造函数,让它仍然正常工作。非常感谢。谢谢你,我感谢你解释为什么需要它!这是正确的答案。我在启用延迟加载时遇到了这个问题。解释它发生的原因使编码人员能够在自己的应用程序上下文中进行正确的修复,而不是做一些不需要的事情。