2017-03-03 30 views
5

すべてのチュートリアルはproject.jsonが含まれるべきであることに同意:目的「Microsoft.EntityFrameworkCore.Design」

"Microsoft.EntityFrameworkCore.Design": { "type":"build", "version":"1.0.0-preview2-final" } 

私はそれを含めたことがない、と問題を抱えていたことがありません。

私は、このパッケージが何をするん

"Microsoft.EntityFrameworkCore" 
"Microsoft.EntityFrameworkCore.Sqlite" (or Sqlserver) 
"Microsoft.EntityFrameworkCore.Tools" 

が含まれていますか?どうして問題なく除外できますか?


更新:どのシナリオでどのパッケージをインポートするのかを理解するための回答を参照してください。

答えて

8

Microsoft.EntityFrameworkCore.Designには、Entity Framework Coreのすべてのデザイン時ロジックが含まれています。さまざまなツール(PMCのコマンドレット(Add-Migration,dotnet ef & ef.exeなど)がすべて呼び出されるのは、このコードです。

マイグレーションまたはリバースエンジニアリングを使用しない場合は、その必要はありません。

そして、それが必要なときには、私たちはPrivateAssets="All"を奨励して、ほとんど必要ないサーバーに公開しないようにします。

+0

PMCは使用しませんが、移行にはCLIツール( 'dotnet ef foo bar')を使用します。そして、問題はありません。奇妙な!私は 'Microsoft.EntityFrameworkCore.Tools'を含んでいるのでしょうか? – grokky

+1

はい。 EFCore.ToolsはEFCore.Designを引き出します。 – bricelam

+0

ありがとう、これは最終的に意味があります!最後に、「EFCore.Design」と「EFCore.Tools」の違いは何ですか?チュートリアル/例は決して説明しません、彼らは両方をインポートすると言うだけです。私が望むのはCLIツールだけです。 – grokky