4

在 Entity Framework 6 Code First 中,有没有办法(可能通过 Data Annotations 或 Fluent API)使 Migrations 生成的数据库具有小写的列名,即使我的模型类具有 Pascal Casing 属性?

即这个类:

 public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string Surname { get; set; }
}

应该映射到这个表(即迁移应该生成这个表):

person
    person
    firstname
    surname

甚至像这样的东西会很好:

person
    person_id
    first_name
    surname

PS我正在使用MySQL数据库...谢谢

4

1 回答 1

1

是的,可以使用数据注释 [Table("table_name")] 和 [Column("column_name")]。

列名的更好方法是在 OnModelCreating() 方法中编写自定义约定。例如,像

modelBuilder
    .Properties()
    .Configure(p => p.HasColumnName(p.ClrPropertyInfo.Name.ToLower()));

并为您的表 id

modelBuilder
    .Properties()
    .Configure(p => p.IsKey().HasColumnName(///the name you want///));

我不确定表名的自定义约定,但我个人的偏好是对我的表使用数据注释。

于 2018-10-10T01:17:31.867 回答