私はEF 5.0コードファーストのVS 2012プロジェクトを持っており、すべてのEntity Frameworkメニューコマンド(View Entity Data Model DDL SQL)が「呼び出しのターゲットによって例外がスローされました」ポップアップを生成します。また、変更されたのは、EF Power Tools Beta 1 (または VS 2010 かどうかはわかりません) が出力ウィンドウに EF Power Tools メッセージを表示するために使用したことだと思います。今私が得るのはポップアップだけです...これはVSまたはPower Toolsの問題ですか?
5 に答える
これは私の回避策です:
コンストラクターをコメントアウトし、静的な MyDbContext をそのままにしておきます -->
public class MyDbContext: DbContext
{
public static string ConnectionName = "Name = SMS_ADvTECHContext";
static MyDbContext()
{
Database.SetInitializer<SMS_ADvTECHContext>(null);
}
/* public SMS_MyDbContext()
: base(ConnectionName)
{
}*/
}
次に、コンテキスト クラス --> Enityframework --> エンティティ データ モデルの表示 (読み取り専用) を右クリックすると、ビューが生成されます。
このエラーが発生しましたが、それはさらに単純な問題でした...私のコンテキストを含むプロジェクトはスタートアップ プロジェクトではありませんでした。プロジェクトをスタートアップ プロジェクトに設定すると、機能し始めました。
DbContext クラスを含むプロジェクト内の App.config で正しいデフォルト接続ファクトリが構成されていなかったときに、このエラーが発生しました。正しいファクトリを使用するように更新したところ、このエラーはなくなりました。私の場合、LocalDbConnectionFactory を使用するように設定しました。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Entity Framework メニュー コマンドを選択したときに、DBContext に使用する接続文字列を Visual Studio が判断できない可能性があります。
私の場合、dbContext に「デフォルト」の接続文字列があることを確認することで、これを解決できました。そのため、db コンテキストを右クリックしてエンティティ フレームワークを選択すると、DB に接続できます。
つまり、DBContext を変更して、コマンド ライン パラメーターからアプリへの接続文字列を選択しました。したがって、通常、私の db コンテキストには「デフォルト」値がありませんでした。
public class MyDbContext : DbContext
{
public static string ConnectionName;
public DnnDbContext()
: base( "Name=" + ConnectionName) {
}
ご覧のとおり、デフォルトでは ConnectionString はありませんでした。
私は次のように変更しました:
public static string ConnectionName = "DefaultConnNameInAppConfig";