問題タブ [objectcontext]
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# - ObjectContext からの EntityFramework EntityType?
私はこの署名を持つメソッドを持っています:
public void GenerateLog<TEntity>(TEntity entity) where TEntity : EntityObject
ObjectContext をループして、ObjectContext の各エンティティに対してこれを呼び出すにはどうすればよいですか?
私はこれを行うことができることを知っています:
GenerateLog<MYSTRING>
しかし、名前の文字列表現から の代わりに移動する方法がわかりませんGenerateLog<TEntity>
。
c# - 保存のタイミングに関するEntity Frameworkの質問
ObjectContext を持つオブジェクトがあります。そのオブジェクトの OnSave 次のように、その ObjectContext を使用してアクションを実行しています。
「GenerateLog」メソッド内で、Entity を取得し、ObjectContext から切り離します (これにより、すべての Lazy Loaded オブジェクトを通過することなく Binary Object に変換できます)。
バイナリ オブジェクトに変換した後、バイナリ データを保持する (別のタイプの) 別のオブジェクトを作成します。私は電話しますthis.ObjectContext.AddObject('TableName', myNewObject);
。
次に、以前にデタッチしたオブジェクトでこれを呼び出します (entityState はエンティティの以前の状態です)。
この時点で、コードは上記の SaveChangesAction メソッドに戻ります。現在、これらのオブジェクトはどちらも ObjectContext にないため、どちらもデータベースに保存されません。
オブジェクトに影響を与える ForEach 内のオブジェクトを変更することで、すでに何か悪いことをしていることは理解していますが、これが ObjectContext が保存される直前に実行する必要があるコードであることを考えると、他にこれを行う方法がわかりません。
asp.net - 1 回のクエリ実行後に破棄される HTTP リクエストごとの ObjectContext インスタンス
ObjectContext を HttpContext.Current 内に配置して、同じリクエスト内のすべてのロジックが毎回開いたり破棄したりせずにアクセスできるようにすることを検討しています。ObjectContextManager クラスでこれを作成しました。
そして、現在のリクエストでクエリを実行するたびに、この静的プロパティを呼び出します。
ただし、2 番目のクエリを実行しようとすると破棄されます。どこで間違ったのか教えてもらえますか?
c# - EF4.0-デバッグ中にどのエンティティがどのObjectContextにアタッチされているかを確認する方法はありますか?
これは、ここでの私の問題の続きです。
JulieLermanが数か月前にくれたソリューションを使おうとしています。現在、以下を使用して、ObjectContextに事前にアタッチされた新しいゲームエンティティを生成しています。
リポジトリで、次のように彼女が提案したように、状態を「追加」に設定してゲームをOCにアタッチしようとします。
わかりやすくするために、コントローラーのコンストラクター全体を次に示します。
ご覧のとおり、_gameRepositoryはコントローラー構築で作成されているため、同じである必要があります。つまり、_gameRepositoryのOCは、ゲームとプラットフォームの両方で同じである必要があります。それでも、その場合でも、次のような例外が発生します。
2つのオブジェクトは異なるObjectContextオブジェクトにアタッチされているため、2つのオブジェクト間の関係を定義することはできません。
何か厄介なことが確実に起こっているので、エンティティが実際に接続されているObjectContextを実際に追跡できるかどうかを知りたいのです。それらはすべて同じOCに接続する必要がありますが、例外はそうではないと主張します。
たぶんそれは、Ninject(MVCに合わせたバージョンではなく、バニラバージョン)を使用してコントローラーにリポジトリーを注入することと関係があります。問題が何であれ、それはほとんど明白ではないようです。どんな助けでも大歓迎です。
編集:リポジトリのObjectContext:
バインディングを挿入します:
c# - ObjectContextで挿入されたばかりのエンティティに対してコードを実行する信頼できる方法は?
エンティティがデータベースに挿入されるたびに実行する必要があるコードがいくつかあります。問題は、このコードがエンティティの PrimaryKey を必要とすることです。
EntityState.Unchanged を使用して ObjectStateManager からエンティティを取得できることがわかりました。これが Insert 後のオブジェクトですが、ObjectContext の EntityState が常に「Unchanged」であるオブジェクトだけになるかどうかはわかりません。
ObjectContextで挿入されたばかりのオブジェクトに対してのみコードを実行する信頼できる方法はありますか?
c# - EFコードファーストDbContextをAsp.Netデータソースにバインドする方法は?
Entity FrameworkCodeFirstContext
で使用する次のものを作成しました。
Context
ここで、これをAsp.Netアプリケーションで使用して、を使用してCRUD操作を実行したいと思いますGridView
。DataSource
データバインディングを行うためにを作成する必要があります。どうすればいいですか?
ASP部分は次のようになります。
entity-framework - EF 4.1でdbcontextエンティティを介してForeachするにはどうすればよいですか?
ASP.NET Entity Framework 4.1 MVC 3(C#)を使用しています
DbContext内のすべてのエンティティを介してforeachしたいと思います。動的ビューを作成するには、エンティティを動的に参照できる必要があります。
Lermanの本、2冊のMVC(2&3)の本、msdn、asp.netなどを読んだことがあります。何かが足りないのではないでしょうか。
エンティティにアクセスするには、ObjectContextを使用する必要があるようです。それが正しい方法であるならば、私は確かにそれをする方法を理解することができません。助けてください。ありがとうございました。
wcf - セルフ トラッキング エンティティのデバッグ - オブジェクトのキー値が ObjectStateManager の別のオブジェクトと競合するため、AcceptChanges 例外が発生する
セルフ トラッキング エンティティへの変更を保存するときに例外が発生します。
この問題は、次のような他の質問で対処されていると思います:自己追跡エンティティ - オブジェクトのキー値が ObjectStateManager の別のオブジェクトと競合するため、AcceptChanges を続行できません
私の質問は、開発と本番の両方でこの問題をデバッグする最良の方法は何ですか. 例外を引き起こしているエンティティまたはエンティティ タイプの詳細をキャッチ/アクセスできる追加情報はありますか。
そうでない場合、別のオブジェクトを参照する重複キーを探してオブジェクト グラフをトラバースするために何かを書く必要がありますか? もしそうなら、誰もこれを経験していますか?
詳細情報:
私のシナリオは次のとおりです。クライアントは、他のエンティティへのさまざまな FK を持つすべてのエンティティのコレクションを含む WCF サービスを介してエンティティを取得します。これらの FK リレーションシップはすべて linq クエリに含まれているため、完全なオブジェクト グラフが得られます。
クライアントのビューは、パフォーマンスのためにルックアップ テーブルなどの静的データ用に以前にフェッチされたエンティティを使用します。User への FK を持つ Customer オブジェクトがある場合、これはサービスから取得されたときにロードされます。Order などの別のエンティティをオブジェクト グラフに追加し、Customer オブジェクトと同じ Id を持つこのオブジェクトに User プロパティを設定しますが、エンティティは別の時点で取得されたため、別の ObjectContext を使用します (つまり、オブジェクトは同じ ID ですが、オブジェクトの同じインスタンスではありません) このエラーが発生します。
他の質問へのリンクは、これを回避する方法を示していますが、エラーを追跡できるように、問題を引き起こしているエンティティに関する詳細情報を探しています。
visual-studio - コード内またはアプリケーションの読み込み時に EF オブジェクト コンテキストを更新/再作成する
Visual Studio で [新しい項目を追加] --> [Entity Data Model] の下でオブジェクト コンテキストを作成するときに、コードで行う方法はありますか?
たとえば、データベースに新しいテーブルを追加するとします。次回、そのデータベースのモデルを使用するアプリケーションをロードすると、モデルが更新され、その新しいテーブルのデフォルトの概念マッピングが自動的に作成されます。
おそらく、LINQ-To-Entities ではなく ESQL を使用してデータベースをクエリするので、新しいエンティティ セット/オブジェクトへの厳密に型指定されたアクセスがあるかどうかは気にしません。
また、このソリューションには最初に EF コードが必要ですか?
entity-framework-4 - EF Code First コンテキストからエンティティをデタッチする方法
これは、本来よりもはるかに難しいようです。
MVC3、SQL Compact Edition、および Entity Frameworks Code First を使用してイベント登録サイトを作成し、Steven Sanderson の Mvc Scaffolding NuGet パッケージを利用しています。
イベントのリストはあまり変更されない可能性が高いため、Application_Start メソッドのグローバル リストにキャッシュしています。
ここで、RaceEventRepository は MvcScaffolding によって構築されたリポジトリ クラスであり、
その後、リポジトリ全体で使用され、(私が推測するに) リポジトリが破棄されるときに破棄されます。EventRaces はグローバルに利用可能なリストです。
私の問題は、 EventRaces に保存されている RaceEvent への外部キーを使用して登録者レコードを作成すると、「IEntityChangeTracker の複数のインスタンスでエンティティ オブジェクトを参照できません」というエラーが発生することです。
いくつかのブログ投稿と SO の回答によると、この投稿のリスト 1 のように、キャッシュされたエンティティをコンテキストから切り離す必要があります。
私の問題は、ObjectBrowser を使用すると、Detach メソッドで何も見つからないことです。リポジトリのコンテキストにはありません。コンテキスト内の個々の DbSet にはありません (ただし、Attach() メソッドはあります)。System.Data.Object.ObjectSet には 1 つあるのですが、DbSet と ObjectSet の間のマッピングが見つかりません。
明らかに、私は何かが欠けています。誰かが私を正しい方向に向けることができますか?