問題タブ [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.
asp.net-mvc - ASP.NETMVCを使用したEntityFramework。エンティティの問題を更新しています
エンティティとその関連エンティティも更新しようとしています。たとえば、プロパティCategoryを持つクラスCarがあり、そのCategoryを変更したいとします。したがって、コントローラーには次のメソッドがあります。
ObjectContextクラスのUpdateCarメソッドは次のとおりです。
問題は、コントローラーでPOSTの後にCategoryプロパティを設定すると、エンティティの状態が分離されたままではなく、追加された状態に変わることです。
この投稿のように、すべてのプロパティを1つずつ設定せずに、EntityFrameworkおよびASP.NETMVCとの1対1の関係を更新するにはどうすればよいですか?
c# - DataSetオブジェクトをその場でObjectContext(Entity Framework)オブジェクトに変換する方法は?
私は既存のSQLServerデータベースを持っており、データベースごとに1つずつ、大きな特定のログファイル(多くの場合100 MB以上)からのデータを保存しています。いくつかの分析の後、データベースは再び削除されます。
データベースから、VisualStudioデザイナーを介してEntityFrameworkモデルとDataSetモデルの両方を作成しました。SqlBulkCopy
DataSetは、非常に複雑な解析プロセスの後に、を使用してデータを一括インポートするためだけのものです。次に、すべてのクエリはEntity Framework Modelを使用して実行されます。CreateQuery
このモデルのメソッドは、次のようなインターフェイスを介して公開されます。
さて、時々私のファイルは非常に小さいので、そのような場合はデータベースへのインポートを省略したいのですが、エンティティとしてアクセス可能なデータのメモリ内表現を持っているだけです。アイデアは、DataSetを作成することですが、一括インポートする代わりに、インターフェイスを介してアクセスできるObjectContextに直接転送します。
これは意味がありますか?
これまでにこの変換で行ったことは次のとおりです。DataSet内のすべてのテーブルをトラバースし、単一の行を対応するタイプのエンティティに変換して、タイプされたEntityコンテキストクラスのインスタンス化されたオブジェクトに追加します。
エンティティタイプごとにコンバーターを作成し、データセット内の各テーブルを反復処理する必要があるため、非常に面倒な作業です。データベースモデルを変更した場合は注意してください。
MyEntities
また、 SQL Serverデータベースに有効な接続文字列を提供した場合にのみ、インスタンス化できることがわかりました。毎回本格的なデータベースに実際に書き込みたくないので、これは私の意図を妨げます。インメモリプロキシデータベースをいくつか持つつもりです。
もっと簡単にできますか?DataSetオブジェクトからObjectContextを生成するなど、このような変換を自動化する方法はありますか?
PS:ユニットテストについて、いくらか関連しているように見えますが、正確ではない質問をいくつか見ました。
entity-framework - EF4 - 単体テスト用に ObjectContext をモックできますか?
TypeMock Islolatorを使わずにできますか? メタデータのみの接続文字列を渡すなど、オンラインでいくつかの提案を見つけましたが、TypeMock 以外に遭遇したものは何もなく、単体テストのためにサービスに注入できるモック ObjectContext を本当に許可しているようです。TypeMock の $$ を下げる必要がありますか、それとも代替手段はありますか? オープンソースの TypeMock に匹敵するものを作成できた人はいませんか?
c# - オブジェクトの追跡情報を ObjectContext から別のものに変更するにはどうすればよいですか?
objectContext に追加されたオブジェクトがあります..
いくつかの操作の後、同じデータベースの別のオブジェクトコンテキストに渡す必要がありますが、常に次のメッセージに直面します:
エンティティ オブジェクトは、IEntityChangeTracker の複数のインスタンスによって参照できません。
追跡情報を変更して、古いオブジェクトから切り離し、新しい objectcontext にアタッチする必要があります。
しかし、新しいスコープでは、以前にデタッチする古いobjectContextを所有していません
私の質問: このオブジェクトの追跡情報を新しい ObjectContext に変更するにはどうすればよいですか?
entity-framework - EntityFrameworkを介して「製品」を追加するための3つの方法。違いは何ですか?
「ObjectSet(Entity Framework)の操作」というタイトルのこのMSDNの記事を読む製品を追加する方法の2つの例を示します。1つは3.5用、もう1つは4.0用です。
http://msdn.microsoft.com/en-us/library/ee473442.aspx
知識が不足しているため、ここで何かが完全に欠落している可能性がありますが、次のような製品を追加したことはありません。
私はどちらの方法でもそれをしなかったでしょう、そしてただ使用しました:
これらの3つの方法の違いは何ですか?
「私の方法」は、ObjectQueryを使用する別の方法ですか?
ありがとう、コーハン
nhibernate - エンティティフレームワークのマージ機能?
NHibernate には、次のことを行うマージ関数があります。
- 現在セッションに関連付けられている同じ識別子を持つ永続インスタンスがある場合、指定されたオブジェクトの状態を永続インスタンスにコピーします
- 現在セッションに関連付けられている永続インスタンスがない場合は、データベースからロードするか、新しい永続インスタンスを作成してください
- 永続的なインスタンスが返されます
これはEFで可能ですか?この部分を意味します。特定のオブジェクトの状態を永続インスタンスにコピーします。そして、私が ApplyCurrentValues を使用した場合、それは更新動作のように見えますか?
.net - ASP.Net Entity Framework、オブジェクト コンテキスト エラー
私は 4 層の ASP.Net Web アプリケーションを構築しています。レイヤーは次のとおりです。
- データレイヤー
- エンティティ層
- ビジネスレイヤー
- UIレイヤー
エンティティ レイヤーにはデータ モデル クラスがあり、T4 テンプレート (POCO) を使用してデータレイヤーのエンティティ データ モデル (edmx ファイル) から構築されます。エンティティ レイヤーは、他のすべてのレイヤーで参照されます。
私のデータレイヤーには、次のような機能を持つ SourceKeyRepository というクラスがあります。
このアプリケーションの他のレイヤーでクエリを実行したくないため、遅延読み込みは無効になっています。UI レイヤーの情報にアクセスしようとすると、次のエラーが表示されます。
ObjectContext インスタンスは破棄されており、接続を必要とする操作には使用できなくなりました。
これは、私の DataModelContainer "dmc" が破棄されたためだと確信しています。この IEnumerable オブジェクトをデータ層から返して、ObjectContext に依存せず、DataModel のみに依存するようにするにはどうすればよいですか?
データ層でのみ遅延読み込みが発生するように制限する方法はありますか?
.net - .Net Entity objectcontext スレッド エラー
次のように、DAL から BAL にオブジェクトを返す n 層の asp.net アプリケーションがあります。
この結果はビジネス レイヤーを通過し、UI レイヤーに到達してエンド ユーザーに表示されます。アプリケーションの他のレイヤーでのクエリの実行を防ぐために、遅延読み込みは行いません。
オブジェクトを削除するために、DAL に別の関数を作成しました。
「Get」関数を呼び出した後に「Delete」を呼び出そうとすると、次のエラーが表示されます。
セッションで他のスレッドが実行されているため、新しいトランザクションは許可されません
これは ASP.Net アプリです。私の DAL にはエンティティ データ モデルが含まれています。上記の関数を含むクラスは、コンストラクターでインスタンス化された同じ _dataContext を共有します。私の推測では、リーダーは「Get」関数からまだ開いており、閉じられていません。どうすれば閉じることができますか?
私の UI レイヤーでは、結果をループして、次のように削除しようとします。
編集
エラーは次の行で発生しています。
asp.net-mvc - ExecuteFunctionメソッドがObjectContextの子クラスのbase.ExecuteFunctionを介してのみ使用できるのはなぜですか?
サイトのリポジトリにあるobjectcontextオブジェクトからObjectContext.ExecuteFunctionを呼び出そうとしています。
リポジトリは汎用であるため、私が持っているのは、Entity Frameworkからの特定のオブジェクトを実際に表すオブジェクトではなく、ObjectContextオブジェクトだけです。
ExecuteFunctionメソッドを使用して生成されたコードの例を次に示します。
でもやりたいのはこんな感じ…
なぜ私が代わりに電話ExecuteFunction
しなければならないのか誰もが知っていますか?base
_ctx
また、私が書いたようなことをする方法はありますか?リポジトリを汎用的に保ちたいのですが、ストアドプロシージャを実行する必要があるため、ますます難しくなっています...
更新:これが私が試したものですが、メソッドがインテリセンスに表示されません/それを使用してコンパイルしようとするとエラーが発生します
ありがとう、
マット
entity-framework - Entity Framework 4.0 を使用した関数のインポートとリポジトリのパターン
EF 4.0 に対してリポジトリ パターンを使用する際に、関数インポートの使用をどのように実装したかについて、誰かアドバイスしてもらえますか?
候補エンティティにマップされたテーブルと、候補にマップされた既存の sproc からの関数インポートもあります。これは EF でうまく機能しますが、T が POCO エンティティである IObjectSet のコンストラクターを取るリポジトリを使用して抽象化しています。ただし、これは関数インポートへの参照を取得できないことを意味します。これを実行する唯一の方法は、ObjectContext への参照を、それを必要とするリポジトリに渡すことですが、これは私には少しデザインの臭いのように感じます。
リポジトリのいくつかはカスタム インターフェイスで拡張されていますが、依然として同じ問題に直面しています。
アドバイスをいただければ幸いです。