EntityFramework中发生异常

时间:2016-12-26 22:20:08

标签: c# asp.net .net entity-framework

我正在做我的MVC应用程序,我已经完成了它的一部分(使用Entity Framework)并且工作正常。但是,我没有收到错误:

+       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; }
}

如何解决此问题?我想我已经尝试过我能找到的所有东西,但是没有任何效果 此外,我已经从数据库读取数据并使用它,它的工作原理。它只在这种情况下失败了(至少到目前为止)。我对此感到很困惑。

2 个答案:

答案 0 :(得分:3)

您需要向Subject类添加无参数构造函数:

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; }
}

答案 1 :(得分:2)

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

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

public Subject() {}