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