EntityFramework发生异常

问题描述:

我正在做我的MVC应用程序,我已经做了一部分(使用实体框架),并正常工作。然而,没有我得到了一个错误:EntityFramework发生异常

+  InnerException {"The class 'ClassDeclarationsThsesis.Models.Subject' has no parameterless constructor."} System.Exception {System.InvalidOperationException} 


An exception of type 'System.Reflection.TargetInvocationException' occurred in EntityFramework.SqlServer.dll but was not handled in user code 

我的类看起来是这样的:

public partial class Subject 
{ 
    private int v; 
    private int userid; 

    public Subject(int v, int userid, string name) 
    { 
     this.class_id = v; 
     this.user_id = userid; 
     this.name = name; 
    } 


    public int class_id { get; set; } 
    public int user_id { get; set; } 
    public string name { get; set; } 

    public virtual Group Group { get; set; } 
    public virtual Subjects_Users Subjects_Users { get; set; } 
    public virtual Task Task { get; set; } 
} 

我怎么解决这个问题呢?我认为我已经尝试了所有我能够找到的东西,但没有成功。
此外,我已经从数据库中读取数据并使用它,它工作。它只在这种情况下失败(至少目前为止)。我对此很困惑。

+0

能否请你告诉LINQ查询导致这个错误?你可能会重写它来和当前课程一起工作。 – juharr

您需要添加参数的构造函数到主题类:

public partial class Subject 
{ 
    private int v; 
    private int userid; 

    public Subject() 
    { 
    } 

    public Subject(int v, int userid, string name) 
    { 
     this.class_id = v; 
     this.user_id = userid; 
     this.name = name; 
    } 


    public int class_id { get; set; } 
    public int user_id { get; set; } 
    public string name { get; set; } 

    public virtual Group Group { get; set; } 
    public virtual Subjects_Users Subjects_Users { get; set; } 
    public virtual Task Task { get; set; } 
} 

在像C#(或Java)这样的语言中,每个公共类都带有自己的无参数构造函数。也就是说,直到你定义一个构造函数(任何构造函数),那么你有责任添加所有你需要的构造函数。

所以你的情况,你就需要添加:

public Subject() {} 
+1

我不认为这很容易,谢谢! –