問題タブ [entity-framework-migrations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
code-first - Table Per Type(TPT)を使用してサブクラスをマップするためにEntity Framework 4.3 Code Firstを取得するにはどうすればよいですか?
EF4.3コードファーストと自動移行を使用しています。私は次の3つのクラスを持っています:
これでupdate-databaseを実行すると、TPH(Table-Per-Hierarchy)を使用して3つすべてに対して単一のテーブルが作成され、これらすべてのプロパティがマージされ、Discriminator列が追加されます。
最終的に3つのテーブルになるようにするにはどうすればよいですか?
entity-framework - EF (Entity Framework) 4.3 移行ツールが EF 4.1 DB で機能しない
EF 4.1 (Code First) で開発された 1 つの DB を変更したいと考えています。プロジェクトを EF 4.3 にアップグレードし、次の手順に従います: http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx
すべてが順調に進んでいますが、現在の DB (EF 4.1 Code First) でテストしたい場合、Update-Database で次のエラーが発生します。
ターゲット データベースが EF 4.3 より前のバージョンの Code First で作成されており、移行履歴テーブルが含まれていないため、次の移行をスキャフォールディングできません。このデータベースに対して移行の使用を開始するには、現在のモデルがターゲット データベースと互換性があることを確認し、移行の更新プロセスを実行します。(Visual Studio では、パッケージ マネージャー コンソールから Update-Database コマンドを使用して、移行の更新プロセスを実行できます)。
どうすれば EF 4.1 (Code First) DB を移行できるのだろうか? さらに、その DB はライブでデータがあり、テーブルを削除できません。
c# - クラスライブラリでEntityFrameworkの移行を有効にできません
EF 5に乗り込み、コードファースト移行ツールを使用していますが、移行を有効にしようとするとエラーが発生するようです。
Enable-Migrations
パッケージマネージャーコンソールに入力すると、
現在のプロジェクトには、DbContextから派生したクラスが見つかりません。
生成されたConfigurationクラスを編集して、移行を有効にするコンテキストを指定します。
プロジェクトMyApp.MvcUIに対してコードファーストマイグレーションが有効になっています。
次に、MvcUIプロジェクトにMigrationsフォルダーとConfigurationクラスを作成します。つまり、私のDbContextは、MyApp.Domainというクラスライブラリプロジェクトに存在します。それはそのプロジェクトですべてを実行しているはずであり、私のDbContextを見つけるのに問題はないはずです。
c# - シードデータをEFコードファーストのOnModelCreatingメソッドに配置することは許容されますか?
EF4.3の移行APIを使用してシードデータを実行する方法を知っています。私は一晩中それで遊んでいます。ただし、私の最終的な目標は、ユーザーがソース管理からプロジェクトをプルしてF5キーを押すことができるようになるまでプロジェクトを取得することです。これで、データベース、シードデータ、その他すべてを実行できます。
現在、コードファーストはフレッシュビルドでDBをビルドする優れた仕事をしていますが、パッケージマネージャーコンソールでUpdate-Databaseを実行するまで、シードデータは挿入されません。その時点で、シードメソッドを実行し、シードデータを挿入します。
- OnModelCreatingメソッドでそれを実行しても大丈夫ですか?
- ここでAddOrUpdate拡張メソッドを引き続き利用できますか?
- このシードデータは、F5キーを押すたびに実行されますか?もしそうなら、DBがすでに作成されているかどうかを検出し、最初のデータベース作成時にのみこのシードデータを追加できますか?
asp.net-mvc-3 - 開発と本番の間のEFコードの最初の移行の管理
非常に簡単に:
LadislavMrnkaの記事に基づいてCodeFirstとして構築された既存のプロジェクトにEFMigrationsを実装していました
すでに本番環境に移行しているプロジェクトにEF移行を実装する場合、開発に適用された更新と本番環境用に生成されたスクリプトの間で移行スクリプトをどのように管理できますか?
私が困惑している理由は、スクリプトごとに生成されたMigrationIdにTimeStampが追加されているためです。移行の試みで、devとprodの__MigrationHistoryテーブル内に記録されたエントリが異なることに気付きました。したがって、DBがかなりの数の移行アップグレードを実行する場合、何らかの理由でダウングレードが必要になった場合は、疑問が生じます。 、を使用してスクリプトを作成するための正確なMigrationIdを相互に関連付けることは非常に困難です。update-database -script
テーブルを作成する$InitialMigration
を作成する非常に簡単なプロセス。__MigrationHistory
次に、モデルへの変更の後update-database
に、データベースを移行するための変更が続きます。そして、このプロセスは、モデル変更の論理的にグループ化されたバッチがある場合は常に循環します。
__MigrationHistory
表を見ると、
c# - EntityFrameworkコードの最初の移行の例外
EntityFramework4.3のCodeFirstMigrationsを使用しているときに、いくつかの未処理の例外が発生します。
データベースコンテキスト:
エンティティ:
データベース初期化子:
以下を使用して、EntityFramework4.3をDALプロジェクトとMVCプロジェクトにインストールしました。
インストール-パッケージEntityFramework
MVCプロジェクトをスタートアッププロジェクトとして設定し、データベースコンテキストと初期化子を使用してDALプロジェクトに対して次のコマンドを実行しました。
PM>有効-移行-詳細
NuGetプロジェクト'Ckms.KeyManagement.Managers'を使用します。コンテキストタイプの検索中にエラーが発生しました(例外の詳細を表示するには、-Verboseを指定してください)。System.Data.Entity.Migrations.Design.ToolingException:要求されたタイプの1つ以上をロードできません。詳細については、LoaderExceptionsプロパティを取得してください。System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)at System.Data.Entity.Migrations.Design.ToolingFacade.GetContextTypes()
at System.Data.Entity.Migrations.MigrationsCommands.FindContextToEnable()編集移行を有効にするコンテキストを指定するために生成された構成クラス。プロジェクトCkms.KeyManagement.Managersに対してコードファーストマイグレーションが有効になっています。
DbMigrationsConfiguration子クラスがDALプロジェクトに追加されます。DbContextのタイプを手動で追加し、自動移行を有効にした場合:
これらの例外は、Add-MigrationコマンドとUpdate-Databaseコマンドに対してスローされます。
PM> Add-Migration TestEFMigrationsColumn -Verbose
NuGetプロジェクト'Ckms.KeyManagement.Managers'を使用します。スタートアッププロジェクトの使用''。System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。---> System.ArgumentException:パラメータが正しくありません。(HRESULTからの例外:0x80070057(E_INVALIDARG))---内部例外スタックトレースの終了--- System.RuntimeType.InvokeDispMethod(String name、BindingFlags invokeAttr、Object target、Object [] args、Boolean [] byrefModifiers、Int32culture 、String [] namedParameters)at System.RuntimeType.InvokeMember(String name、BindingFlags bindingFlags、バインダーバインダー、オブジェクトターゲット、Object [] ProvidedArgs、ParameterModifier []修飾子、CultureInfoカルチャー、String [] namedParams)atSystem.Management.Automation。 ComMethod.InvokeMethod(PSMethodメソッド、
データベースを更新する:
PM> Update-Database -Verbose
NuGetプロジェクト'Ckms.KeyManagement.Managers'を使用します。スタートアッププロジェクトの使用''。System.Reflection.TargetInvocationException:呼び出しのターゲットによって例外がスローされました。---> System.ArgumentException:パラメータが正しくありません。(HRESULTからの例外:0x80070057(E_INVALIDARG))---内部例外スタックトレースの終了--- System.RuntimeType.InvokeDispMethod(String name、BindingFlags invokeAttr、Object target、Object [] args、Boolean [] byrefModifiers、Int32culture 、String [] namedParameters)at System.RuntimeType.InvokeMember(String name、BindingFlags bindingFlags、バインダーバインダー、オブジェクトターゲット、Object [] ProvidedArgs、ParameterModifier []修飾子、CultureInfoカルチャー、String [] namedParams)atSystem.Management.Automation。 ComMethod.InvokeMethod(PSMethodメソッド、
何か案は?エラーメッセージはあまり役に立ちません。既存のデータベースがある場合とない場合でNugetコマンドを試しました。
.net - EF 4.3 移行でのタイムスタンプの追加
Code First Migrations を使用しており、モデルを変更してテーブルにタイムスタンプ フィールドを追加しています。2 回目の移行で timetamp フィールドを追加しようとしています。ここに私のコードがどのように見えるかのサンプルがあります
生成された移行は次のようになります
Update-Database コマンドを実行すると、 「データ型タイムスタンプの列ではデフォルトを作成できません。テーブル 'Users'、列 'TimeStamp'。制約を作成できませんでした」というエラー メッセージが表示されます。表ですが、それでも問題は解決しませんでした。
この移行セットにタイムスタンプ フィールドを追加するにはどうすればよいですか?
asp.net-mvc-3 - XXXX は使用されなくなりました。モデルの変更を検出するために使用されるようになりました
EF 4.3IncludeMetadataConvention
ではEdmMetadata
、その他のクラスは廃止されました。
XXX は使用されなくなりました。EdmMetadata はモデルに含まれていません。<see cref="EdmModelDiffer" /> を使用して、モデルの変更を検出できるようになりました。
それは何ですかEdmModelDiffer
、どのように使用する必要がありますか?
vb.net - 移行 (Entity Framework 4.3) - スクリプトが実行されない
スクリプトは正しく生成されます。複数のレイヤーを使用しているため、次のコマンドがパッケージ マネージャー コンソールで実行されます。
例えば。テーブルにメール列を追加したとき:「所有者」
--> 結果:
次に使用するコマンドは次のとおりです。
--> 結果:
App.Config の私の接続文字列は次のとおりです。
初期カタログを指定しましたが、間違ったカタログを対象としています。FacturatieMVCv2.Data.Website.MyResellerContext という名前のデータベース テーブルが作成/更新されます。
以下は私のapp.configです
つまり、Update-Database コマンドが間違ったデータベースを更新しました。
entity-framework - Entity Framework 4.3 で移行を有効にできません
EF Code First を使用したクラス ライブラリがあります。EF 4.3 にアップグレードしたばかりで、移行を有効にしたいと考えています。
Enable-Migrations -ProjectName MyProjectName
PM コンソールに入力すると、次のエラーが表示されます
どの辞書が間違っているのかわかりません。
私の接続文字列は次のようになります。
何が間違っている可能性がありますか?
注意:
app.config の正確なコピーを使用してコンソール アプリケーションでクラス ライブラリを使用すると、データベースに完全にアクセスできます。