如何为Entity Framework 5关闭复数表创建?

Yar*_*ara 25 c# pluralize entity-framework-5

我正在尝试使用Entity Framework 5.第一个问题是EF自动创建表.我尝试通过包括修复它 dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>().第二个问题是像这样的错误

自创建数据库以来,支持"CountryContext"上下文的模型已更改.考虑使用Code First Migrations来更新数据库.

我尝试修复它,dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();但没有意义.下一个数据访问层:

Table(Name = "tblCountries")]
public class Country
{
     [Column(Name = "id", IsDbGenerated = true, IsPrimaryKey = true)]
    public int Id {get;set;}

    [Column(Name = "name")]
    public string Name {get;set;}
}

public class CountryContext:DbContext
{
    public CountryContext(string connStr):base(connStr)
    {
    }

    public DbSet<Country> TblCountries { get; set; }

    protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
    {
        dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    }
}

    public class CountryDal:BaseDal
{
   public int CheckIsExist(Country country)
    {
        int id = 0;
        using (var context = new CountryContext(ConnectionString))
        {
            var first = context.TblCountries.FirstOrDefault(el => el.Name == country.Name);
            if (first != null)
            {
                id = first.Id;
            }
        }
        return id;
    }
    }
Run Code Online (Sandbox Code Playgroud)

附加信息:VS 2012,框架4.5,实体框架5.0.0.0对于EF 4,它工作正常(没有OnModelCreating方法).

Maj*_*ini 56

您可以在OnModelCreating方法中编写此代码:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
Run Code Online (Sandbox Code Playgroud)

  • 使用System.Data.Entity.ModelConfiguration.Conventions; (2认同)

Lad*_*nka 5

如果您不希望EF创建表并管理模型和数据库之间的一致性,请在应用程序启动时使用它:

Database.SetInitializer<CountryContext>(null);
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 5

在EF 6.0中使用LINQ:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    var conventions = new List<PluralizingTableNameConvention>().ToArray();
    modelBuilder.Conventions.Remove(conventions);
}
Run Code Online (Sandbox Code Playgroud)

  • 很奇怪 - 你删除了一个目标类型的空数组? (3认同)