【问题标题】:Entity Framework do not Pluralize my SQLServer database实体框架不复数我的 SQLServer 数据库
【发布时间】:2011-08-12 02:19:42
【问题描述】:

我正在使用 .NET Framework 3.5。所以我认为EF也是3.5。 我在这里看到了一些东西:EF3.5 don't Singularize or Pluralize names

不幸的是,在 .NET 3.5 SP1 中附带的当前版本的 Entity Framework 中,当从数据库对模型进行逆向工程时,我们不会尝试对名称进行单数化或复数化。

在我的 MVC2 项目中,我想为订单的部分类编写代码以进行表单验证。哪个是对的?你能推荐一些示例文件吗?

public partial class Order { ... }
public partial class Orders { ... }

.edmx 之后我的 .cs 中的代码:

    public partial class Questions : global::System.Data.Objects.DataClasses.EntityObject
{
    /// <summary>
    /// Create a new Questions object.
    /// </summary>
    /// <param name="questionnaireGUID">Initial value of QuestionnaireGUID.</param>
    public static Questions CreateQuestions(string questionnaireGUID)
    {
        Questions questions = new Questions();
        questions.QuestionnaireGUID = questionnaireGUID;
        return questions;
    }

【问题讨论】:

  • 您不升级到 .NET 4.0 的任何具体原因?
  • 由于经济原因,生产服务器是 Windows 2003。我们的许多其他应用程序或功能仍然使用 NET 2.0。我正在努力:)
  • 您仍然可以在 Windows 2003 Server 上使用 .NET 4.0
  • 而且你可以同时使用 .NET 2.0 和 4.0。

标签: entity-framework asp.net-mvc-2 pluralize


【解决方案1】:

您可以在 .edmx 模型中手动复数实体名称。

部分类取决于生成的实体类的名称。您可以再次检查实体模型(这次是它的 .cs 类),在那里您会发现是否生成了OrderOrders

编辑:

你已经在你的 edmx 中找到了public partial class Questions,所以如果你想为此创建验证类,你必须再次使用public partial class Questions。如果您使用单数形式,则不会连接类,因为在这个级别,它们只是类,编译器可能不会猜到,他应该将 Question 与 Question*s* 联系起来.这些类名只是字符串,其中没有任何语义。

【讨论】:

  • 我在原始问题中粘贴了一些代码。我现在仍在研究数据库结构,因此数据库仍在频繁更改。我想修改数据库并使用 VS2008 对 .edmx 进行自动逆向工程。
  • 如果您在 db 中的表名称为 Questions,但您希望该实体名称为 Question 并且较旧的 ED 不会自动执行此操作,那么您必须在生成的文件中手动重写您的名称模型。在您的设置中,我没有看到任何解决方法。
  • 抱歉没有表达清楚。 QuestionsQuestion 不会打扰我。我的问题是在我的部分课程中是否使用QuestionsQuestion,以便我可以进行表单验证的工作。
  • 啊,对不起。好吧..答案是使用Questions,因为您发布了public partial class Questions。 ;)
猜你喜欢
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2014-04-17
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多