ASP.NET 5とEntity Framework 7を使用して、既存のデータベース構造のDbContext
を生成しようとしています。当然のことながら、これを簡単に行う方法に関するドキュメントは多くありません。さらに、コンテキストのみを足場にしたいと思います。約900のテーブルがあり、そのうちのいくつかだけを気にします。それぞれのモデルクラスは必要ありません。
指定されたコマンド here および here を少しの運で使用しています。
だから、私は2つの質問があると思います:
生成されたコンテキストファイルはどこにありますか?コマンドプロンプトで失敗せずにコマンドを実行しましたが、他には何も起こりません。サポートされていないプロパティを持つ古いEF6モデルを追加できるので、少なくとも適切な場所にいることはわかっています。サポートされていないというエラーが表示されます。
対応するモデルクラスのないコンテキストのみを生成することは可能ですか?
コンテキストとモデルを生成するプロジェクトでも同じ問題がありました。これが私がしたいくつかのことです。
以下の1.0 RC1の更新
Project.json
"dependencies": {
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
},
"commands": {
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
DNXコマンド
dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer
以下の元の投稿
これらがproject.jsonファイルに追加されていることを確認してください:
"dependencies": {
"EntityFramework.SqlServer": "7.0.0-beta7",
"EntityFramework.Commands": "7.0.0-beta7",
"EntityFramework.SqlServer.Design": "7.0.0-beta7"
},
"commands": {
"ef": "EntityFramework.Commands"
}
dnvm update-selfとdnvm upgradeを使用して、dnvmとdnxランタイムをアップグレードします。これをcmdで実行しました。
プロジェクトの場所でcmd.exeを開きました(Windowsを使用している場合は、フォルダーに移動し、Shiftキーを押しながらフォルダーを右クリックして、[ここにコマンドウィンドウを開く]をクリックします)。私の場合、データアクセスレイヤー用に別のプロジェクトがありました。
C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\
次に、simplayを実行しました。
dnx ef dbcontext scaffold "Data Source = .; Initial Catalog = database; Integrated Security = True" EntityFramework.SqlServer
プロジェクトがビルドできることを確認してください。エラーがある場合、コマンドはおそらく機能しません。
すべてのモデルとコンテキストを生成しました(各エンティティのOnModelCreating()設定を使用)。すべてのモデルが必要ない場合は、使用していないモデルを削除してください。
だからあなたの質問に答えるために:
これがお役に立てば幸いです。
Scaffoldコマンドには、オプション--table(-t)が存在します。
dnx ef dbcontext scaffold connectionstring provider -t dbo.tab1 -t dbo.tab2
EF 7の場合、baseを使用して初期化する必要がなくなり、実際にはコンパイラエラーが発生します。 Microsoft EF7開始ドキュメント
新しいことに注目したい
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
// Visual Studio 2013 | Use the LocalDb 11 instance created by Visual Studio
// optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
// Visual Studio 2012 | Use the SQL Express instance created by Visual Studio
// optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
}