2011-05-05 49 views
13

我使用单数表名称的标准。 EF4 Code First默认情况下会复制表格名称。我已经把代码覆盖这个约定,但似乎不工作。EF4代码首先使表格名称单数

使用部分:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity; 
using System.Data.Entity.Database; 
using System.Data.Entity.ModelConfiguration; 
using System.Data.Entity.ModelConfiguration.Conventions.Edm; 

数据上下文:创建

public class SiteDataContext : DbContext 
    { 
     public DbSet<Blog> Blogs { get; set; } 
     public DbSet<BlogFeedback> BlogFeedbacks { get; set; } 
     public DbSet<BlogCategory> BlogCategories { get; set; } 

     // Twist our database 
     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); 
      base.OnModelCreating(modelBuilder); 
     } 
    } 

表:

  • 博客
  • BlogFeedbacks
  • BlogCategories

当因为公约倍率(我需要什么)应该是:

  • 博客
  • BlogFeedback
  • BlogCategory

任何人有一个想法,为什么倍率线不工作?非常感谢。

回答

27

您使用了错误的约定。你需要做下面的事情。

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{  
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 
+0

这是一个很好的!你是对的,我改变了,现在正在工作!非常感谢。 – Nestor 2011-05-05 16:29:24

+2

请注意,在EF5中,参数类型是DbModelBuilder – justabuzz 2012-11-02 00:46:19

+0

Dude,谢谢。就在指甲上。 – VivekDev 2015-12-23 04:38:17

相关问题