当我尝试Scaffold My Controller时,该页面会抛出以下错误
"无法检索'Entity.Observation'的元数据.没有为此对象定义无参数构造函数."
你能帮我这个吗?
这是代码:
public class Observation
{
public Observation() { }
public virtual int Id { get; set; }
public virtual DateTime Date { get; set; }
public virtual User Teacher { get; set; }
public virtual User Observer { get; set; }
public virtual AcademicYear AcademicYear { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
实体位于其他项目中,Context位于不同的项目中,Controllers和Views位于同一项目中
我正在使用Entity Framework Code First模型
小智 9
我有完全相同的问题,错误声明我的模型中缺少默认(无参数)构造函数.在我的情况下,错误是误导性的 - 我的模型确实包含默认构造函数,但我的DataContext没有.我在DataContext中添加了一个默认构造函数 - 问题解决了!
public class ReportEntities : DbContext
{
public ReportEntities():base()
{
}
public ReportEntities(string connection)
: base(connection)
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果您确实添加了无参数构造函数并且仍然收到错误,那么听起来您的构建并未更新。所以试试这个:
首先,添加一个无参数构造函数:public void Observation(){},或者根本没有构造函数。
然而,脚手架是使用元数据完成的;反射。在重试之前,您必须使用模型重建项目。在这种情况下:Observation确保没有构建错误。
由于您说该实体位于另一个项目中,因此请确保引用正确。例如:单击对实体dll的引用,并确保路径正确。另外,请确保Copy Local已打开false。如果其为真;该 dll 只被“复制到本地”一次。您可能正在使用旧版本。
如果之后仍然失败,请尝试先删除实体 dll,然后重建,这样您就 100% 确定您正在使用新版本。