【问题标题】:Take off database table prefix when using ef6 code first from existing database首先从现有数据库中使用 ef6 代码时取消数据库表前缀
【发布时间】:2014-05-07 02:28:15
【问题描述】:

我的数据库中有很多前缀为“tbl”的表,例如 tblCustomer,当使用 EF6 工具生成模型时(Add->New Item- >Data->ADO.NET Entity Data Model)并选择Code First from database,EF生成所有以tbl为前缀的类,如何编辑生成模板以去掉那些前缀?

Rowan Miller 在这篇帖子 Customizing ‘Reverse Engineer Code First’ In The EF Power Tools 中解释了如何编辑这些生成模板,但不知道如何使用 EF 6 中的新整合工具进行编辑

【问题讨论】:

  • 记住.. 如果您的数据库中的每个表都以tbl 开头,则与没有表以tbl 开头的表相同
  • @paqogomez 肯定,但不是所有的表都有前缀并且代码根本不可读(我的意思是 Customer 比 tblCustomer 更具可读性,我认为这是自然的方式),最终我们可以将该模型与另一个数据库一起使用

标签: c# entity-framework t4 entity-framework-6


【解决方案1】:

在生成代码优先模型后,您只需更改类的名称并使用DataAnnotations(查找名为“表和列”的部分)映射到正确的表,可能会更轻松。

using System.ComponentModel.DataAnnotations;

[Table("tblMyModel")]
public class MyModel {
    public int ID {get; set;}
    //etc
}

您也可以使用 FluentAPI。

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    modelBuilder.Entity<MyModel>()
        .ToTable("tblMyModel");
}

这对于大型表结构当然可能不实用,但它会起作用。

如果您想尝试使用 EF6 提供的更高级选项,可以阅读 Code First Conventions

【讨论】:

  • 最终这就是我到目前为止所做的事情,但是当你有 200 个表时并不容易,因为不仅是类名,而且在你引用该类的所有配置文件中在对象之间的所有关系中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多