2012-08-26 9 views
22

私はEntity Framework 5を使用しようとしています。最初の問題は、EFがテーブルを自動的に作成することでした。私は dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>()を含めて修正しようとしました。 2番目の問題はこのようなエラーでしたEntity Framework 5の複数テーブルの作成をオフにするにはどうすればよいですか?

データベースが作成されて以来、 'CountryContext'コンテキストをサポートするモデルが変更されました。 データベースを更新するには、コードの最初の移行を使用することを検討してください。

私は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; 
    } 
    } 

追加情報:VS 2012、フレームワーク4.5、エンティティフレームワーク5.0.0.0 とEF 4のために、それは(OnModelCreatingメソッドなし)完璧に動作します。

+0

完全な推測でここが、EFはまだ耳鼻咽喉科を認識しません'ID'のように全ての大文字を使用することに反対するIDとして暗示するときにIDとして使用する:' ID' –

答えて

42

あなたはOnModelCreatingメソッドでこのコードを書くことができます。

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
5

あなたはEFは、テーブルを作成し、モデルとデータベースは自分のアプリケーションの起動時にこれを使用するあなたの間の整合性を管理したくない場合は、次の

Database.SetInitializer<CountryContext>(null); 
+0

これは問題を解決しますが質問はしません - 質問者は間違った質問をしています;) –

4
EF 6.0でLINQを使用して

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    var conventions = new List<PluralizingTableNameConvention>().ToArray(); 
    modelBuilder.Conventions.Remove(conventions); 
} 
+1

奇妙な - ターゲット型の空の配列ですか? –

関連する問題