【问题标题】:Mapping MySQL database tables/fields to C# entity classes manually手动将 MySQL 数据库表/字段映射到 C# 实体类
【发布时间】:2010-12-18 04:52:11
【问题描述】:

使用实体框架第 4 版,您可以选择执行他们所谓的“代码优先”。问题是你的类和字段/属性的命名需要与我所知道的数据库相匹配。我正在使用 MySQL,因此我在命名时使用所有小写和下划线,因为并非所有操作系统都支持大写,并且如果您尝试强制使用它,可能会使 MySQL 行为怪异。问题是我使用了标准 C# 命名约定,即使用 camelCase 和 PascalCase。有没有办法将我的数据库中的命名映射到我在 C# 中的类而不使用实体模型设计器(.edmx 文件),因为设计似乎有点错误。谢谢。

【问题讨论】:

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


    【解决方案1】:

    您可以使用可覆盖的方法OnModelCreating,它将在类的第一次实例化时运行。在那里你可以像这样覆盖单个表

    public class Context : DbContext {
    
        //your models
    
        protected override void OnModelCreating(ModelBuilder modelBuilder) {
            modelBuilder.Entity<SomeTable>()
                             .MapSingleType()
                             .ToTable("YourTableNameInDatabase");
        }
    }
    

    就这么简单:)

    【讨论】:

    • 模型类确实扩展或任何东西,所以没有可覆盖的方法,因为它只是一个 POCO。
    • 你是对的,但是 DbContext 类是具有覆盖的类。
    猜你喜欢
    • 2014-06-10
    • 2023-03-06
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多