MVC脚手架问题

anw*_*war 9 asp.net-mvc-3

当我尝试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)


Ron*_*ijm 0

如果您确实添加了无参数构造函数并且仍然收到错误,那么听起来您的构建并未更新。所以试试这个:

  1. 首先,添加一个无参数构造函数:public void Observation(){},或者根本没有构造函数。

  2. 然而,脚手架是使用元数据完成的;反射。在重试之前,您必须使用模型重建项目。在这种情况下:Observation确保没有构建错误。

  3. 由于您说该实体位于另一个项目中,因此请确保引用正确。例如:单击对实体dll的引用,并确保路径正确。另外,请确保Copy Local已打开false。如果其为真;该 dll 只被“复制到本地”一次。您可能正在使用旧版本。

如果之后仍然失败,请尝试先删除实体 dll,然后重建,这样您就 100% 确定您正在使用新版本。