1

私はMVC3アプリケーションを構築しており、EntityFramework4.3をコードファーストで使用しています。コンテキストが複雑になっているため、SQL Server2008R2を使用することにしました。次に、の接続文字列を変更しましたweb.config。確認したところ、新しい接続文字列が正しいことはわかっていますが、EFはSQL Server CEのデフォルトの接続文字列(.\SQLEXPRESS ...)を引き続き使用しています(nugetパッケージからSQL Server CEを削除しました)。

私のコンテキスト名はCodeFirstContextであり、接続文字列名CodeFirstContextもです。しかし、return context.Products;常に失敗するか、の接続文字列がcontext言うのでSQLEXPRESS(myweb.configは接続文字列をに設定しますSQLSERVER)。

ここで何が起こっているのですか?プロジェクト内のデフォルトの接続文字列をすべて消去しました。プロジェクトを実行しているときでも、SQLServerExpressからすべてのデータを取得します。

約2日探しています。多くの人が接続文字列を変更するだけで機能するのに、なぜこれが難しいのでしょうか。

4

4 に答える 4

1

私はそのような問題を解決しました:

public class CodeFirstContext : DbContext
{
    public CodeFirstContext() : base("RandevuIzle")
    {
    }
    public DbSet<User> Users { get; set; }
}


<connectionStrings>
  <add name="RandevuIzle" connectionString="Data Source=111.222.333.444\MSSQLSERVER2008; Initial Catalog=RandevuIzle;User Id=MyUserName;Password=myPassword" providerName="System.Data.SqlClient" />

何かがうまくいかなかったが、私には理解できない。以下のコードを実行した後、プロジェクトを再開します。その後、正常に動作します。

于 2012-05-05T09:38:13.023 に答える
1

ルート/マシン構成から接続文字列を取得している可能性があります.web.configファイルに次のような明確な要素を追加します

<connectionStrings>
  <clear/>
  .. your connection strings here
...
于 2012-05-04T13:20:07.130 に答える
0

聖なるSQLの煙、バットマン!これは私を今日完全にバタバタさせました。新しいプロジェクトでVS2010を使用してEF5.0を起動して実行することは、私が想像していたよりもはるかに困難でした。私は同じ問題を抱えていて、コードへのこの素晴らしいオードを見つけました::

http://odetocode.com/blogs/scott/archive/2012/08/15/a-troubleshooting-guide-for-entity-framework-connections-amp-migrations.aspx

そして具体的には::

 public class DepartmentDb : DbContext 
 {
    public DepartmentDb()
        : base(@"data source=.; 
                 initial catalog=departments;
                 integrated security=true")
    { }

    public DbSet<Person> People { get; set; }
}

必要な結果が得られました。このようにデータソースを設定する必要があり、app.config内に明白な解決策が見つからないのはクールだと思いますか?いいえ、私はしません。しかし、私は今日、LINQからSQL、そしてEFへの移行を試みるのにあまりにも多くの時間を費やしてきました。私はまだそうすることにある程度の関心を持っている間に、先に進んでアプリケーションの一部を完成させるつもりです。

于 2013-02-24T22:04:20.310 に答える
0

DbContext をインスタンス化するときに、CodeFirstContext ではない名前を指定していますか?

于 2012-05-04T14:27:27.730 に答える