【问题标题】:ADO.NET fails to generate parameterless constructorADO.NET 无法生成无参数构造函数
【发布时间】:2011-05-19 22:14:23
【问题描述】:

我创建了一个名为 EF 的 ADO.NET 模型并添加了一个 DbContext 生成器,它使用 EF.tt 和 .cs 文件填充我的 /Model 文件夹,每个实体一个。

通常,系统使用无参数构造函数创建类...由于某种原因,我无法理解我有一个缺少此构造函数的实体。它不是抽象类,没有基类型并且具有公共访问权限。我有很多其他这样的类,但它们都有无参数的构造函数。我用谷歌搜索并环顾了 VS,试图弄清楚这个有什么特别之处,以及如何让它生成构造函数,但没有找到答案。

我总是可以在 partial 定义中创建它,但我宁愿自己弄清楚。此外,如果我用鼠标右键单击 EF.tt,我会在菜单中看到一个名为“运行自定义工具”的选项,但是当我选择它时,似乎什么也没有发生。如何重新生成 .cs 文件?

附言是的,我已经清理并重建了解决方案,以防万一它搞砸了,但仍然有问题

【问题讨论】:

    标签: entity-framework asp.net-mvc-3 ado.net


    【解决方案1】:

    在 C# 中(你在使用 C# 吗?):

    • 当你在类中定义无构造函数时,编译器默认会创建一个无参构造函数
    • 当您定义无参数构造函数(可能还有其他一些构造函数)时,无参数构造函数也将在您定义时出现
    • 当您定义了多个构造函数,但没有定义无参数构造函数时,编译器不会为您创建无参数构造函数。在这种情况下,您有责任定义它(是否在部分类中)。

    【讨论】:

    • 是的 C#,这就解释了。完美的。非常感谢你们俩
    【解决方案2】:

    默认构造函数默认存在,不生成。如果类没有任何明确定义的构造函数,它总是具有默认的无参数构造函数。如果你在其他地方指定了任何构造函数(部分类),默认的无参数构造函数不再存在,如果你想使用它,你必须自己创建它(EF总是想使用它)。

    【讨论】:

    • Ops,几乎同时发布。您还应该在此处提及语言,因为我确实相信创建的构造函数可能因语言而异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2022-12-18
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多