【问题标题】:ado.net entity data model not using the entity names correctlyado.net 实体数据模型未正确使用实体名称
【发布时间】:2021-01-18 12:30:17
【问题描述】:

我想将现有数据库添加到我的项目中,但它不尊重其中的模式。 在我的项目中:

添加新文件 -> 数据 -> ado.net 实体数据模型 -> 数据库中的 EF 设计器 -> .... -> 然后我选择我想要的表。

表格如下所示:Image from sql manager

它们是这样导入的:Image from visual studio

有什么方法可以让 EF 生成具有类似 [schema.name] 的命名结构的实体数据模型类,例如 Stock.Equis?

【问题讨论】:

  • 您希望Stock 成为类名的一部分还是命名空间的一部分?
  • @DavidBrowne-Microsoft 类名。

标签: c# asp.net-mvc entity-framework


【解决方案1】:

C# 不允许使用 '.'类名中的字符,因此您正在寻找的命名结构是不可能的。

如果您仍然想在模式的类名中使用某种标识符,那么您可能会找到解决方法,但我建议不要这样做,因为如果您在此处进行这种自定义,那么您可以适应这种自定义随着项目的发展,将不得不使用许多未来的代码开发几种变通方法。这种自定义还可能使代码看起来不一致,导致读者难以理解代码,因为 Entity Framework 已经遵循此约定十多年了,导致维护问题,还可能违反 C# 最佳实践。因此,我建议,继续使用并坚持使用默认实现。我个人一直坚持使用默认实现,我从未遇到过任何复杂情况。

以下是关于在实体框架中使用模式名称的简短文章。这可能有助于了解如何将模式名称与实体数据模型类联系起来。本文适用于 Code-First 方法,但您也应该能够掌握 Database-First 方法的概念。

https://www.itprotoday.com/development-techniques-and-management/working-schema-names-entity-framework-code-first-design

【讨论】:

    【解决方案2】:

    您必须为此使用注释。

    using System.ComponentModel.DataAnnotations.Schema;
    
    [Table("StudentMaster")]
    public class Student
    {
        public int StudentID { get; set; }
        public string StudentName { get; set; }
    }
    

    参考:https://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-04
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多