2016-11-28 13 views
5

Mac用のVisual Studio(OSX 10.12.1)をインストールしました。私は非常に幅広くダイビングしてきました。Visual Studio MacプレビューエンティティフレームワークSQLiteマイグレーション

私は、EntiteFrameworkCore(1.1.0)をSQLiteで動作させようとしたかったのです。

私は新しいコンソールアプリケーション.NETコアを作成しましたが、いくつかの問題ですべての必要なナゲットパッケージを追加できました。何とかVisual Studioは依存関係をダウンロードできなかったので、すべての依存関係を手動でダウンロードする必要がありました。 (.Net Core 1.1.0 NuGet packages fail to install in Visual Studio Macはこれをまだテストしていません)

この記事(https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite)に記載されているとおり、私は移行を追加したいのですが、IDEで必要なコマンドラインツールを見つけることができませんでした。 私はここに何かを忘れましたか?

次に、.NET Core CLIを使用して手動で実行しました。コンソール。 (https://www.microsoft.com/net/core#macos)。しかし、dotnet ef migrations add initを実行すると、次のエラーが発生します。

No executable found matching command "dotnet-ef"

誰でもこのプログラムを正常に実行できましたか?

+0

私は同様の問題を持っていたし、やることができましたパッケージマネージャコンソールからの足場。私の場合、DBはPostgreSQLでした。 –

答えて

9

Visual Studioの現在、マック2017(2017年4月)のためにMicrosoft.EntityFrameworkCore.Tools.DotNetへの参照を追加することはできませんMicrosoft.EntityFrameworkCore.Toolsパッケージを使用して、エラーを返しました:

Package 'Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0' has a package type 'DotnetCliTool' that is not supported by project 'MacMvc'. 

ファイルを手動で編集し、参照番号をcsprojファイルに直接追加することができます(documented)。

<ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> 
    </ItemGroup> 

次に、dotnet restoreを実行してパッケージをインストールします。その後、ドキュメントごとにdotnet ef migrations add NameOfMigrationdotnet ef database updateのスクリプトを使用することができます。

N.B:コマンドを実行するときは、プロジェクトディレクトリに存在する必要があります。

はまた、Mac用のVS 2017のための提案feeedbackを参照してください。.csprojにそれらの次の行を追加し、Mac用のVSを使用して

+0

こんにちはmiha、 よくお答えいただきありがとうございます。 私はそれに着くとすぐにこれを試してみます。 –

+0

私はまだ問題にぶち当たっていますが、主にdotnet cliがあります。とにかくおかげさまで、何かをもっと知っていれば、ここでそれを拡張します。 –

0

このセクションがproject.jsonファイルにあるかどうかを確認し、見つからない場合は追加してください。

"tools": { 
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4" 
} 

これは、EF 1.1のために有効である、以前のバージョンでは、

+2

彼はVisual Studioコードではなく、Visual Studio for Macについて語っています。 Visual Studio for Macには 'project.json'ファイルはありません。 –

2

が私のために移行作業を行います

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" /> 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild2-final" /> 

パッケージはVSからの.csprojの保存を自動的に復元しました。

ターミナルから "dotnet ef"コマンドを実行するには、プロジェクトディレクトリにある必要があります。つまり、.slnファイルがあるディレクトリからではなく、下位レベルから取得する必要があります。

注:Tools.DotNetのv1.0.1で同じトリックが機能しませんでしたが、私はその理由を知らない。

0

せずにこのItemGroupを追加するので、あなたのプロジェクトでこれを追加すること、(編集.csproj)をCMDのdbcontext足場接続文字列の使用を追加することはできません最初

<ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
    </ItemGroup> 
関連する問題