手动将MySQL数据库表/字段映射到C#实体类

手动将MySQL数据库表/字段映射到C#实体类,c#,mysql,entity-framework-4,asp.net-mvc-3,C#,Mysql,Entity Framework 4,Asp.net Mvc 3,在实体框架的版本4中,您可以选择先执行他们所称的代码。问题是,根据我所知,类和字段/属性的命名需要与数据库匹配。我使用的是MySQL,因此我在命名时使用所有小写和下划线,因为并非所有操作系统都支持大写,如果您试图强制使用,可能会使MySQL行为怪异。问题是我使用了camelCase和PascalCase的标准C#命名约定。有没有一种方法可以将数据库中的命名映射到C#中的类,而不使用实体模型设计器(即.edmx文件),因为设计似乎有点缺陷。谢谢。您可以在ModelCreating上使用可重写方法,

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

您可以在ModelCreating上使用可重写方法
,该方法将在类的第一次实例化时运行。在这里,您可以像这样覆盖各个表

public class Context : DbContext {

    //your models

    protected override void OnModelCreating(ModelBuilder modelBuilder) {
        modelBuilder.Entity<SomeTable>()
                         .MapSingleType()
                         .ToTable("YourTableNameInDatabase");
    }
}
公共类上下文:DbContext{
//你的模型
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
modelBuilder.Entity()
.MapSingleType()
.ToTable(“您的表名数据库”);
}
}

很简单:)

模型类确实进行了扩展或其他任何操作,因此没有可重写的方法,因为它只是一个POCO。您是对的,但是DbContext类是具有重写的类。