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; }
}
我怎么解决这个问题呢?我认为我已经尝试了所有我能够找到的东西,但没有成功。
此外,我已经从数据库中读取数据并使用它,它工作。它只在这种情况下失败(至少目前为止)。我对此很困惑。
答
您需要添加参数的构造函数到主题类:
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
我不认为这很容易,谢谢! –
能否请你告诉LINQ查询导致这个错误?你可能会重写它来和当前课程一起工作。 – juharr