做ASP.NET MVC3 Music Store示例时,
EntityFramework4.1 下表名被自动转换成复数问题:
解决方案:
using System; using System.Collections.Generic;
using System.Data.Entity; using ContosoUniversity.Models; using System.Data.Entity.ModelConfiguration.Conventions; namespace ContosoUniversity.Models{ public class SchoolContext : DbContext { public DbSet<Student> Students { get; set; } public DbSet<Enrollment> Enrollments { get; set; } public DbSet<Course> Courses { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) {modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
代码中为每个实体集创建了一个DbSet属性。在Entity Framework技术中,一个实体集与数据库中的表保持一致并且一个实体与表中的行保持一致。
OnModelCreating方法中的语句阻止了表名被限制成复数。如果您不这么做,生成的表名将会被命名为Students,Courses
, 和Enrollments
来取代想要生成的表名Student,Course
,和Enrollment,
之所以这样,是因为开发者就表名是否使用复数没有达成一致。这个教程使用了单数形式,但重点是您可以自己选择使用哪种形式来命名。