問題タブ [ef-model-builder]
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.
entity-framework - Entity Frameworkでは、実際にdbに接続せずにdbmodel構築を単体テストするにはどうすればよいですか?
コード ファーストの Entity Framework オブジェクトを実装する DbContext から継承するクラスがあります。
この dbcontext でモデル ビルダーを実行する単体テストが必要です。これは、「キーがエンティティで定義されていません」などのエラーを検出するのに役立ちます。
しかし、単体テスト中に実際のデータベースを利用できない場合があります。実際にコンテキストとのデータベース接続を試みずに、このコードを実行する方法はありますか? 私は次のような無害なことを試しました:
これは技術的に機能します。ただし、これは実行に非常に長い時間がかかります。コール スタックを一時停止して検査すると、System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin への呼び出しがトリガーされます。
最終的にタイムアウトになり、接続エラーを飲み込んでテストを終了します。
接続を試みずにこれを行う方法はありますか?
c# - Entity Framework 複数のカスケード削除
最初に Entity-Framework コードと移行を使用してアプリケーションを開発しています。
次のクラスがあります。これは、あるユーザーが別の製品のバックアップを作成するときの 2 人のユーザー間の関係を表します。User クラスと Product クラスには、UserBackup への参照がありません。この関係は、dbo.UserBackup テーブルにマップする必要があります。ユーザーは、複数の製品に対して複数のバックアップ ユーザーを持つことができます。したがって、基本的に ProductId、BackupUserId、および UserId の組み合わせのみがテーブル内で一意です。
次のように、コンテキスト クラス内で OnModelCreating メソッドをオーバーライドします。
「Add-Migration」コマンドを適用した後に生成された移行ファイルには、次のコードが含まれています。
ただし、アプリケーションを実行すると、次の例外が発生します。
テーブル 'UsersBackup' に FOREIGN KEY 制約 'FK_dbo.UserBackup_dbo.User_BackupUserId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。
ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。
制約を作成できませんでした。以前のエラーを参照してください。
外部キー制約を削除すると、エラーは発生しません。または、少なくとも「cascadeDelete: false」を指定します。ただし、バックアップユーザーが削除された場合に備えて、UserBackup テーブルからレコードを削除する必要があります。
c# - Entity Framework 6 でモデルのキャッシュを無効にする方法 (Code First アプローチ)
次の MSDN ドキュメントを読むことができます。
その後、そのコンテキストのモデルがキャッシュされ、アプリ ドメイン内のコンテキストの以降のすべてのインスタンス用になります。このキャッシングは、特定の ModelBuidler で ModelCaching プロパティを設定することで無効にできますが、パフォーマンスが大幅に低下する可能性があることに注意してください。
問題は、モデル ビルダーにModelCachingという名前のプロパティが含まれていないことです。
モデルのキャッシュを無効にするにはどうすればよいですか (実行時にモデルの構成を変更する場合など)。
c# - ApplicationDbContextでOnModelCreatingを使用しているときに「キーが定義されていません」というエラーを解決しますか?
コレクション型のナビゲーション プロパティを作成しようとしてきましたが、OnModelCreating を使用して 1 人がそれを達成した方法の例を見つけました。MVC 5 アプリケーションで試してみたところ、データベースを更新しようとしたときに次のエラーが発生しました。
モデルの生成中に 1 つ以上の検証エラーが検出されました:
BlogEngine.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' にはキーが定義されていません。この EntityType のキーを定義します。BlogEngine.Models.IdentityUserRole: : EntityType 'IdentityUserRole' にはキーが定義されていません。この EntityType のキーを定義します。IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' は、キーが定義されていないタイプ 'IdentityUserLogin' に基づいています。IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' は、キーが定義されていないタイプ 'IdentityUserRole' に基づいています。
これらの「キーが定義されていません」エラーを解決するにはどうすればよいですか?
私はいくつかの検索を行い、あるユーザーの問題に対してこの解決策を見つけましたが、彼のニーズは私のものとは異なりました. 私がやろうとしていることに対して、解決策はかなり複雑に見えました。
これは問題を引き起こすコードです:
多対多の関係を持つ私の to モデルは次のとおりです。
IdentityUser を表示するように更新します。