Microsoft Visual Studio 2017のGitHub統合を使用して、ASP.Net MVCプロジェクトの更新をコミットしようとしています。
Code-First Migrationsに取り組んでいます。以前のコミットが成功した後、Visual Studioのパッケージマネージャーコンソールで次のコマンドを実行しました。
PM> Enable-Migrations -ContextType ApplicationDbContext
PM> Add-Migration AccountNumberChanges
PM> Update-Database -Verbose
これが完了したら、コミットを実行しようとしましたが、次のエラーが表示されました。
Git failed with a fatal error.
error: open("MyProject/App_Data/aspnet-MyProject-
20171110110346.mdf"): Permission denied
fatal: Unable to process path MyProject/App_Data/aspnet-
MyProject-20171110110346.mdf
上記のコマンドは、プロジェクトのApp_Dataフォルダーに.mdfファイルを追加しました。
mdf
ファイルをgitにコミットするべきではありません-これらはデータベースのデータファイルです。 git
は、ファイルが使用中であり、データをリポジトリに送信できるようにするために読み取りアクセス権が必要であるため、文句を言う可能性があります。最も簡単な解決策は、git rm
を使用してgitから削除することです。たとえば、コマンドラインで:
git rm MyProject/App_Data/aspnet- MyProject-20171110110346.mdf
それでもmdf
ファイルをgitに追加する場合。私もこれでいくつかの問題を抱えていたので、私が見つけたのは:
Visual Studioからサーバーエクスプローラーを使用している場合は、サーバーエクスプローラーウィンドウで接続名を右クリックし、接続を閉じるをクリックします。
これは将来誰かを助けるかもしれない。問題は、サーバーエクスプローラーでローカルDBにファイルが接続されたままであり、ファイルに使用中のハンドルがあり、コミットをブロックすることです。
私が実際にしたことは
Local Dbまたはファイルが関連付けられているデータベースを右クリックし、
.mdfまたは.ldfファイルからハンドルを解放できるように、[分離]オプションを選択します。
PS:コミット時間枠を除き、いつでもデータベースをアタッチできます。
データベースがデタッチされると、コミットは問題なく機能します。これを試してみると、ほとんどの場合うまくいきます。