問題タブ [dbset]
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.
c# - エンティティ タイプに基づく汎用 DbSet の作成
DbSets
最初に次のコードの平和を使用する EF コードでは、各エンティティ タイプに基づいて非ジェネリックを作成できます。
それらをジェネリックとして作成する方法はありますDbSet
か?
c# - エンティティ フレームワークで操作の追加と削除が機能しない
問題が発生したときに、Entity Framework に適用されるリポジトリ パターンについていくつかのテストを行っていました。テスト目的で使用したい架空のホテルマネージャーソフトウェア(HotelManagerと呼ばれる)のコアレイヤーとデータレイヤーを(コードファーストで)実装し、DBへのテーブルの束に関連付けました。
これは構造です:
コア層は HotelManager.Core アセンブリに残り、以下が含まれます。
- すべてのモデル (「リバース エンジニア コード ファースト」ユーティリティで自動生成)
- IRepostiory インターフェイス (コア層へのリポジトリの抽象化に使用)
.
データ層は HotelManager.Data アセンブリに残り、以下が含まれます。
- すべてのモデル マッピング (「リバース エンジニア コード ファースト」ユーティリティで自動生成)
- すべてのリポジトリの実装
- コンテキスト (「リバース エンジニア コード ファースト」ユーティリティで自動生成)
- すべてのリポジトリを含む作業単位
ご覧のとおり、データ層は、クライアント アプリケーションがデータを操作するために使用する Unit of work クラスを公開しますが、ここで奇妙な動作に気付きました。実際、私の UoW に含まれるすべてのリポジトリは正しくロードされますが、操作の追加と削除はまったく機能しません!
例えば:
このテスト メソッドは失敗します。理由はわかりませんが、AddUser()
メソッドが呼び出された後でも (AddUser()
実際には新しいオブジェクトUtenti
のインスタンスがリポジトリに追加されます)、何も起こらなかったように に一致し、テストは失敗します! リポジトリによって管理されている DbSet に、新しく追加されたエンティティが見つかりません。リポジトリからエンティティを削除しても同じ結果になります。何も起こりません。これは、各 Add() または Remove() 操作の後に SaveChanges() メソッドを呼び出す場合にのみ機能しますが、データをロールバックする機会が必要であり、特定の場合にのみ DB と対話したいため、これは不可能です。 DB アクセスを最小限に抑えるための明確に定義されたケース。utente
lastCount
firstCount
これは EF の正しい動作ですか?私はその動作を完全に誤解していますか、それとも私のプロジェクトに何か問題がありますか? UtentiDbSet.Add(new Utente() with {....});
のようなものを実行すると、EF エンジンは新しい Utente オブジェクトを DbSet に「追加済み」状態で追加し (したがって、UtentiDbSet.Count() == 1)、次に SaveChanges() を呼び出すと常に考えていました。私のコンテキストでは、データは DB に永続化されます。
便宜上、プロジェクト全体をここにアップロードしました。
HotelManager.Data.Testというテスト プロジェクトがあります。メソッドが機能しているのになぜAddWontWork()
失敗するのか理解できませんAddWithSaveChangesWillWork()
。HotelManager.Data.Testプロジェクトの app.config で connectionString を設定することを忘れないでください(EF は、データ層に含まれるマッピングを使用して DB 構造全体を構築します)。
前もって感謝します。
c# - ID のコレクションを使用した dbset のクエリ - .Any() の使用方法
私はこのクエリを持っています:
2 番目のクエリは機能しませんが、私がしようとしているのは、qClaims の ID に一致する lnktblClaimStatusClaims からすべてのデータを取得することです。ClaimID は、qClaims では PK であり、lnktblClaimStatusClaims では FK です。
このクエリを書く良い方法を知っている人はいますか?
android - MVC インターネット アプリケーションから Android アプリケーションで DbSet を取得するにはどうすればよいですか?
私は C# MVC4 インターネット アプリケーションを開発しており、このデータベースからデータを取得し、このデータを Xamarin アプリケーションで使用したいと考えています。
これが私の MVC コンテキスト クラスです。
web.config で使用している MVC 接続文字列は次のとおりです。
Xamarin アプリケーションで、MVC 4 Context クラスの各 DbSet の DbSet を取得するにはどうすればよいですか?
これは可能ですか?これについてアドバイスや助けをいただけますか?
前もって感謝します
c# - dbset の命名規則とクラスの命名規則
Dbset を次のように宣言しました。
私のSQLテーブルは呼び出されますJames_Bobs
データを保持するクラスが呼び出されましたJames_BobRelation
これは機能しません...リポジトリ内でこれを呼び出す場合:
それでも、クラス名を James_Bobs に変更すると、うまくいきましたか?
ルールは何ですか?
さらに、これは私を完全に混乱させました...私はと呼ばれるデータベーステーブルを持っていますSausages
DbSet は次のようになります。
実際に働いたソーセージに電話したとき!この場合のクラスはソーセージでしたが...エンティティフレームワークは、可能だと思う場合、「s」を追加しますか? それは私をとても混乱させています
c# - Entity Framework DbSet のパフォーマンスの使用
持つDbContex
:
私がすることができます:
私はそれを一般的な方法でやりたい
2つの間にEntity Framework関連のパフォーマンスの違いがありますか、それとも同じことですか?
unit-testing - FakeItEasy DbSet / IQueryable- エンティティ フレームワーク 6
FakeItEasy のこの投稿に似た例を誰かが持っているかどうか疑問に思っていました(元の投稿はこちらです。正しいセットアップを見つけようとしましたが、正しく設定できませんでした。オンラインで例を見つけることができませんでした。教え始めています。自分で単体テストを行い、FakeItEasy を使用することにしました.これまでの私のプロジェクトはすべてエンティティ フレームワークを使用し、Repository/UOW パターンは使用していません.これは、DbSet と DbContext が私の小規模なアプリケーションには十分であると考えているためです. EFとユニットテストですが、私はまだこれを理解したいと思っています.私が得たエラーは
System.NotImplementedException: メンバー 'IQueryable.Provider' は型 'DbSet
1Proxy' which inherits from 'DbSet
1' に実装されていません。'DbSet`1' のテスト ダブルは、使用されるメソッドとプロパティの実装を提供する必要があります。
どの方向も非常に役立ちます。ありがとうございました。