ASP.NET Core MVC6とEntity Frameworkコアでアプリケーションを構築しています最初にDB文脈で構築されたコードでは、SQLデータベースには既にデータレコードが設定されています。私は最近、VS2015パッケージマネージャーコンソールのコマンド( "dotnet ef migrations added Stage3"、 "dotnet ef database update")を使用してデータモデルを少し変更し、移行を再現しましたが、エラーが発生しました:Entity Frameworkコアエラー:dotnet.exe:System.Data.SqlClient.SqlException(0x80131904):データベースに「Company」という名前のオブジェクトが既に存在します。
dotnet.exe : System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Company' in the database.
Companyテーブルがテーブル関係の最上位にあるため、Company Companyテーブルが既に存在し、EFが新しいテーブル構造を更新することができないためです。接続文字列でDB名を変更すると、新しいテーブル構造の新しいデータベースが問題なく作成されます。この問題に対処する方法がわからないのですか?アプリケーションが近い将来ライブになると、私は適切にモードをさらに変更し、同じ問題が再発し、新しいデータ構造のデータベースを削除して新しいテーブル構造を作り直すことはできません。Startup.csファイルで設定する必要があります。私はまだ役に立つリソースが見つかりませんでした。アドバイスをお願いします。
添付ファイルのスクリーンショットとしてDB初期化プログラムを変更しようとしましたが、実行方法がわかりません。
私は再びプロジェクトコードを確認し、移行が__MigrationHistoryテーブルに適用されていない、移行コードは、実際には、以下のサンプルとして、データベース全体の構造を作成するためのコードを含んでいた:
migrationBuilder.CreateTable(
name: "Company",
columns: table => new
{
CompanyId = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
CompanyName = table.Column<string>(maxLength: 100, nullable: false),
IsAdmin = table.Column<bool>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Company", x => x.CompanyId);
});
そして私の避難所を」プロジェクトの名前空間を変更しました。最近、私はちょうどサイトのユーザー許可テーブル(会社は多くのサイトを持っている)のようないくつかのテーブル関係にいくつかの変更を加えました。私はパーミッションテーブルを追加したので、サイトのパーミッションテーブルは単一のパーミッションタイプの代わりに複数のパーミッションタイプを持つことができます。
Entity Frameworkコアで自動移行を設定する方法がわかりません。 Entity Frameworkのコード最初approchで
変更を会社に転記できますか? – Yaser
私は会社のテーブルに変更を加えていません。最近、私はちょうどサイトのユーザー許可テーブル(会社は多くのサイトを持っています)のような少数のテーブルの関係を少し変更しました。私はパーミッションテーブルを追加したので、サイトのパーミッションテーブルは単一のパーミッションタイプの代わりに複数のパーミッションタイプを持つことができます。 – bearview