29

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

データベースが作成されてから、「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;
    }
    }

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

4

3 に答える 3

7

EF でテーブルを作成したり、モデルとデータベース間の一貫性を管理したりしたくない場合は、アプリケーションの起動時にこれを使用してください。

Database.SetInitializer<CountryContext>(null);
于 2012-08-26T20:23:32.163 に答える