2

EF 5.0を使用しているだけで、EF4.1と同じように機能する非常に単純なDbContextを再作成しました。

ここでコンテキストとモデル

public class AgenciesDatabaseContext : DbContext 
{
   public DbSet<Agency> Agencies { get; set; }
}

[Table("QryAgency")]
public class Agency
{
   [Key]
   public string CardCode { get; set; }
   public string DisplayName { get; set; }
   public string CardFName { get; set; }
   public string Address { get; set; }
   public string ZipCode { get; set; }
   public string City { get; set; }
}

テーブルがすでに存在するため、このコンテキストのglobal.asax初期化子をnullとして設定しました

Database.SetInitializer<ExtranetCentralizerContext>(null);

web.configの接続文字列は次のとおりです。

<add name="AgenciesDatabase" providerName="System.Data.SqlClient" connectionString="..."/>

リポジトリでDbContextを使用しようとすると、次のエラーが発生します。

InnerException = {"Invalid column name '...'.\r\n Invalid column name '...'.\r\nInvalid column name '...'."}

データベースに接続されていないことがわかったので、不思議です。

私が理解していないのは、接続文字列を次のようなコンテキストに渡せば、機能させることができるということです。

 public class AgenciesDatabaseContext : DbContext 
 {
     public DbSet<Agency> Agencies { get; set; }

     public AgenciesDatabaseContext ()
            : base("AgenciesDatabase")
     {

     }
 }

すべてが正常に機能します。だから私の質問は:EFはその名前(この場合はAgenciesDatabase)と一致する接続文字列を使用することを想定されていませんか?この場合、何が失敗するのですか?

4

1 に答える 1

3

app.configでは、名前はAgenciesDatabaseだけでなく、AgenciesDatabaseContextである必要があります。

于 2013-01-30T13:48:52.200 に答える