3

私はこれに1週間取り組んでおり、ASP.Netフォーラムにいくつかの質問を投稿しましたが、誰も私に返事をくれません。内訳は次のとおりです。2つのクラスライブラリで階層化されたMVC4プロジェクトがあります。1つはデータのモデリング用で、もう1つはデータへのアクセス用です。DALには次のものがあります。

public class GinkysDb : DbContext
{
   public GinkysDb()
        : base("ginkys")
    {
        Debug.Write(Database.Connection.ConnectionString);
    }

    public DbSet<User> Users { get; set; }
    public DbSet<SearchLog> SearchLogs { get; set; }

    public class DbInitializer : DropCreateDatabaseIfModelChanges<GinkysDb>
    {
        protected override void Seed(GinkysDb context)
        {

        Guid g1 = Guid.NewGuid();
        Guid g2 = Guid.NewGuid();
        DateTime Date1 = DateTime.Now.AddDays(-160);
        DateTime Date2 = DateTime.Now.AddDays(-37);
        DateTime Date3 = DateTime.Now.AddDays(-16);
        DateTime Date4 = DateTime.Now.AddDays(-10);
        DateTime Date5 = DateTime.Now.AddDays(-60);
        DateTime Date6 = DateTime.Now.AddDays(-23);
            new List<User>
            {
                new User{Id=g1,UserName="jIgnatowski",FirstName="Jim",LastName="Ignatowski",EmailAddress="Jim@Ignatowski.com"},
                new User{Id=g2,UserName="esmtih",FirstName="Elliott",LastName="Smith",EmailAddress="elliott@smith.com"},
            }.ForEach(u => context.Users.Add(u));
            base.Seed(context);

            new List<SearchLog>
            {
                new SearchLog{Id=(Guid.NewGuid()),UserId=g1,ComapnyName="GT",Notes=""},
                new SearchLog{Id=(Guid.NewGuid()),UserId=g2,ComapnyName="MCA",Notes=""},
                new SearchLog{Id=(Guid.NewGuid()),UserId=g1,ComapnyName="RLL",Notes=""},
                new SearchLog{Id=(Guid.NewGuid()),UserId=g1,ComapnyName="PwC",Notes=""},
                new SearchLog{Id=(Guid.NewGuid()),UserId=g2,ComapnyName="PH",Notes=""},
                new SearchLog{Id=(Guid.NewGuid()),UserId=g1,ComapnyName="KPMG",Notes=""},
            }.ForEach(s => context.SearchLogs.Add(s));
            base.Seed(context);
        }
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer(new DbInitializer());
        base.OnModelCreating(modelBuilder);
    }
}

私は次のApp.Configを持っています:

<configuration>
  <connectionStrings>
    <add name="GinkysDb" connectionString="Data Source=.\SQLEXPRESS;initial catalog=ginkys;integrated security=true;App=EntityFramework;multipleactiveresultsets=True" providerName="System.Data.SqlClient" ></add>

  </connectionStrings>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

:base( "name = GinkysDb")を追加して、App.configでこの接続文字列を検索するように強制しようとしましたが、次のエラーが発生します。

'GinkysDb'という名前の接続文字列がアプリケーション構成ファイルに見つかりませんでした。

それは明らかにApp.Configにあります!私はとても悪化しています!私は過去にVS2010、MVC3、EF4.2(または最初にコードを導入したバージョン)を使用してこれらのタイプのプロジェクトを設定しました。VS2012、EF5、MVC4を使用するのはこれが初めてです...

name =の部分を削除すると、正常に機能しますが、ローカルのSQLEXPRESSDBへのデフォルトのコネクタが使用されます。App.Configを使用していないことを確認するためのテストとして、接続文字列をWebホスティングサービスへの検証済みの動作中の接続文字列に置き換え、ローカルSQLEXPRESSサーバー上のDBのすべてのインスタンスを削除しました。アプリを実行すると、ローカルSQLサーバー上にDBが作成されます。助けてください!お願いだから!

ありがとう!トニー

4

1 に答える 1

1

デフォルトでは、すべての構成は開始プロジェクトの構成ファイルから取得されます。そのため、App.config接続文字列は検索されておらず、見つかりませんでした。開始プロジェクトのweb.configファイルに接続文字列を配置する必要があります。これが見つかります。

于 2012-11-11T22:22:54.903 に答える