做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,之所以這樣,是因為開發人員就表名是否使用複數沒有達成一致。這個教程使用了單數形式,但重點是您可以自己選擇使用哪種形式來命名。