私のWebプロジェクトでは、Entity Framework 6モデルの最初のアプローチを使用しようとしています。モデルは別のプロジェクトの既存のデータベースから生成されます。モデル生成の場合、接続文字列はデータアクセスプロジェクトのapp.configに保存されます。メインWebプロジェクト(ASP.NET Core MVC) 私はStartup.csクラスでコンテキスト作成を挿入しようとしています。モデル最初にEntity Framework 6でDbContextを作成
以下は、コンテキスト部分クラスのコードです。コンテキストはテンプレートから自動生成されるため、部分クラスが使用されます。それは私がSystem.Data.Entity.DbConfiguration
Configでpublic class EntityFrameworkConfig : DbConfiguration
{
public EntityFrameworkConfig()
{
this.SetDefaultConnectionFactory(new SqlConnectionFactory());
this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
}
}
から継承されたコンフィギュレーションクラスを有するasp.netコアプロジェクトで使用することができない代わりに、App.configファイルのコードからエンティティ・フレームワークの構成を使用するため
[DbConfigurationType(typeof(EntityFrameworkConfig))]
public partial class MyEntities
{
public MyEntities(String name) : base(name)
{
}
}
{
"MailSettings": {
"ToAddress": "[email protected]"
},
"Connection": {
"ConnectionString": "data source=SERVER;initial catalog=DB;user id=user;password=pwd;MultipleActiveResultSets=True;App=EntityFramework;"
}
}
Startup.csで:
Webプロジェクトでの.json私は、接続文字列を持っていますpublic void ConfigureServices(IServiceCollection services)
{
...
String connStr = _config["Connection:ConnectionString"];
services.AddScoped((_) => new MyEntities(connStr));
...
}
私は、自動生成されたコンテキストクラスのOnModelCreatingイベントからスローUnintentionalCodeFirstExceptionを経験しています:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
はasp.netコアMVCプロジェクトでEntity Frameworkの6モデルの最初のアプローチを使用するには、この適切な方法であり、この例外の理由は何ですか?
私はまったく同じことをしましたが、常にその例外が発生しました。違いは、パーサークラスを使用して自動生成されたコンテキストクラスを新しいコンストラクタで拡張して接続文字列を引数として渡すことができたことです。私のproject.jsonではnet462をフレームワークとして使用しています。 – srlle
'' ' entityFramework> 'を正しく定義しましたか?あなたはそれを見せますか? –
Sampath