問題タブ [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.

0 投票する
1 に答える
251 参照

database - 複数のデータベース セットにデータを保存する

複数のデータベース セットを持つデータベース コンテキストがあります。edit (httpget) と edit (httppost) メソッドがあります。特定のデータを特定のデータセットに保存したい。使用するデータベース セットを指定するにはどうすればよいですか? ところで、Edit メソッドのビューはいくつかのモデルを使用します。

私のデータベース コンテキストは次のようになります。

私が定義するとき

唯一のオプションはdata.SaveChanges(). data.table1.SaveChanges()保存したいデータを渡してみたいと思います。

0 投票する
0 に答える
419 参照

entity-framework - DbSet 内のすべてのエンティティ (エントリ) を (1 つのエントリではなく) 再ロードするにはどうすればよいですか?

DbSet内のすべてのエンティティ (エントリ) を (1 つのエントリではなく)再ロードするにはどうすればよいですか?

私は2つのテーブルを持っています:

および 1 つのビュー:

RefreshInfo() 関数を使用してグリッドのデータソースに DbSet.ToList() を設定し、1 つの Tb1 エンティティを編集してから myDbContext.SaveChanges() を呼び出します。これはデータベースで変更され、MyView1 は正しい値を表示します、RefreshInfo を呼び出すと() 繰り返しますが、データベースからの値は表示されません! 現在のエンティティをリロードでき、機能しましたが、DbSet 内のすべてのエンティティをリロードしたい

RefreshInfo() メソッドを呼び出すたびに、db から新しいデータを取得したいと考えています。(SqlProfiler で確認したところ、ef が SELECT コマンドを db に送信したことがわかりましたが、その代わりに何が起こったのでしょうか?!)

私は毎回新しいdbContextを作成したくありません .winformでdatagridviewとエンティティフレームワークコードを最初に扱っているのは良い解決策ではありません.

0 投票する
0 に答える
428 参照

asp.net-mvc - Perfomance issue - .Count in MVC view

For several pages I use a .Count inside a foreach loop

Because of lazy loading the EF makes a round trip to the database for this.

Now I want to fix this by using this or linq version: Include("List.Flight.FlightReservations")

Doing this makes loading my dbSet take even longer than those foreach round trips

How can I 'load' parts of only 1 object?

I would like to use context.Items.Single(p => p.id == id).Include(.....) So I only load 1 item fully.

Or any other solutions for this? (A way to force load item.List.item2.List inside controller)

Any suggestions are welcome :) Thanks

EDIT : now using

Where(..).ToDictionary(item => item, item => item.Flight.FlightReservations.Count); Also noticed adding an index to my 'clustered index' table helped a little. Still slow though

This query executes very fast, making a IEnumerable<Model>. But still it loads very slow once sent to the view.

0 投票する
2 に答える
2854 参照

entity-framework - ObjectContext と ObjectSet は、DbContext と DbSet よりも優れていますか?

現在、Entity Framework を ORM として使用する新しいアプリケーションのアーキテクチャを完成させています。DbSetただし、デフォルトのオプション ( and DbContext) を使用するか、「トリッキーな」オプション ( ObjectSetand ObjectContext)を使用するかについて、少し混乱しています。後者のクラスは、デフォルトのクラスよりも優れていますか?

0 投票する
1 に答える
794 参照

asp.net-mvc - MVC 4: 単一の継承モデルをメイン モデルに渡して部分ビューに渡す

これを理解しようとしています。

私は食品と呼ばれる主要なクラスを持っています。

Food から継承する複数のクラスがあります: Pizza、Sandwich、Meals など...

Code First Approach を使用してデータベースを作成しました。データベースには、ピザ、サンドイッチ、食事のテーブルがあります。

私のホームページでは、私が持っている各食品の上位 5 を表示する必要がありますが、食品というテーブルを作成したくありません。では、上位 5 つの食品のリストを取得するにはどうすればよいですか (DBSet クラスから food.ToList() にアクセスすることはできません。データベース テーブルを作成する必要があるためです。これらの値を複数取得するにはどうすればよいですか? Class Foods のオブジェクトを作成し、それらを C# コードのビューに渡しますか?

トップ 5 のピザ、トップ 5 のサンウィッチ、トップ 5 の食事のこれらの値をすべて取得したら、モデル「食​​品」をレン​​ダリングし、それらのクラス間で共通のプロパティを表示する部分ビューにそれらを渡す必要があります (つまり、食品に含まれるものであり、ピザや食事に含まれる単一のものの特徴ではありません)など...

これは、mvc がどのように機能するかの概念を理解しようとしているため重要です。これは、2 つのモデルのクラスを作成し、すべての投稿で見られるように、ピザとサンドイッチを一緒に言うことができるこのモデルを受け入れるビューを作成することとは異なります。オンライン。

0 投票する
1 に答える
1273 参照

dbcontext - エンティティが内部アクセスに設定されている場合、DbContext EntitySet null

外部パッケージが具象クラスではなくインターフェースにのみアクセスしてプログラムできるようにするために、dbセットを内部に設定したい

例えば

モデル ブラウザーを介して Person クラスと People エンティティ セットへのアクセスをパブリックに設定するとすぐに、再び機能しますが、パッケージのカプセル化のために内部へのアクセスを制限したいと考えています。

VS2010 EF の Context では機能しましたが、VS2012 の DbContext では機能しませんでした。

どんな助けでも大歓迎です:}

PS

今のところ、以下のように .tt ファイルを編集しました

これにより、セットをインスタンス化するコンテキスト クラスが以下のように生成されます。モデル内のすべてのエンティティ セットに対して、これを .tt ファイルに追加する必要がなくなると便利です。

0 投票する
3 に答える
13343 参照

c# - DbSet <>。Localは特別な注意を払って使用するものですか?

ここ数日、リポジトリからエンティティを取得するのに苦労しています(DbContext)。

アトミックアクションですべてのエンティティを保存しようとしています。したがって、さまざまなエンティティが一緒になって、私にとって価値のあるものを表しています。すべてのエンティティが「有効」である場合、それらすべてをデータベースに保存できます。エンティティ'a'はすでにリポジトリに保存されており、'エンティティ'b'を検証するために取得する必要があります。

ここで問題が発生します。DbSet<TEntity>私のリポジトリは、Linq2Sql(Include()ナビゲーションプロパティなど)でうまく機能するクラスに依存しています。ただし、にDbSet<TEntity>は「追加」状態のエンティティは含まれていません。

したがって、(私が知る限り)2つのオプションがあります。

  • を使用して、使用ChangeTracker可能なエンティティを確認し、それらに基づいてセットにクエリを実行しますEntityState
  • プロパティを使用しDbSet<TEntity>.Localます。

Linq2Sqlを使用してプロパティをナビゲーションChangeTrackerできるような方法で動作させるには、余分な作業が必要になるようです。Include()

私には少し奇妙にDbSet<TEntity>.Local思えます。名前だけかもしれません。パフォーマンスがあまり良くない(DbSet <>自体より遅い)ものを読んだだけです。それが虚偽の陳述であるかどうかわからない。

EntityFrameworkの経験が豊富な人は、これに光を当てることができますか?たどる「賢い」道は何ですか?または、幽霊が表示されているので、常に.Localプロパティを使用する必要がありますか?

コード例で更新


何がうまくいかないかの例


私の使い方の例Repository

Repositoryにはこの方法があります:

私がこの方法でビジネスコードで使用するもの:

DbSetそれが主に私が同じような変数に固執することを好む理由です。Includeナビゲーションプロパティに柔軟性が必要です。Iを使用するChangeTrackerと、でエンティティを取得しますList。これにより、後で関連するエンティティを遅延ロードすることができなくなります。

これが理解できない強気*tに近い場合は、質問を改善できるようにお知らせください。どうしても答えが必要です。

事前にたくさんThx!

0 投票する
1 に答える
327 参照

c# - 直接アクセスには DBSet が必要ですか?

私はすでに答えを知っていると確信していますが、他の人に確認してもらう必要があります。問題は、Entity Framework: Code First での DbSet の使用に関するものです。(C#を使用)

これらの小さなクラスを例として使用しましょう。

したがって、TopClass には ExampleA と ExampleB という名前のクラスのリストがあり、ExampleA には ExampleC のリストがあります。

DbContext から継承するクラスは次のようになります。

端的に言えば、TopClass 用の DbSet だけがあります。Topclasses のオブジェクトはデータベースに保存できます。また、TopClass-objects / ExampleA-object のリストに入れられた ExampleA、ExampleB、および ExampleC のオブジェクトもデータベースに保存されます。データベースから TopClass オブジェクトをロードすると、リストにあった他のすべてのオブジェクトもロードされます。つまり、TopClass のオブジェクトを介して、データベースに保存された他のオブジェクトにアクセスできます。

ここで、私の同僚と話し合ってきた質問があり
ます。TopClass オブジェクトと他のすべての関連オブジェクトをロードせずに (また、SQL コーディングやラムダを使用せずに)、ExampleA のオブジェクトに直接アクセスしたい場合式)、ExampleA には DbSet が必要ですか? または、DbSet からの読み込みを減らして、必要なオブジェクトのみを含めることは可能ですか? はいの場合、TopClass をロードせずに ExampleA のオブジェクトをロードすることさえ可能ですか?

いくつかの答えは明らかだと思います。私自身、TopClass オブジェクトをロードせずに、データベース内のそのクラスのオブジェクトに直接アクセスするには、DbSet が必要だと考えています。ただし、信じるのではなく、知る必要があるので、私の信念を確認または否定 (?) してください。これまでインターネットや文献で読んだことについて言えば、いくつかのクラスでの DbSet の使用は効果的なコーディングを強調していますが、何が可能で何が不可能かは強調していません。

0 投票する
1 に答える
748 参照

wpf - WPFアプリケーションでの短命のDbContextは合理的ですか?

@RowanMiller は、DbContext に関する彼の本で、DbSet.Local プロパティを使用して、1.) データベースへの不要なラウンドトリップと 2.) アプリケーションでのコレクション (ToList() などで作成) の受け渡しを回避する方法を示しています (24 ページ)。次に、このアプローチに従おうとしました。ただし、 [} – ブロックを使用するブロックから別のブロックに変更すると、DbSet.Local プロパティが空になることに気付きました。

では、24ページのポイントは何ですか?DbSet.Local が using- ブロック内でしか使用できない場合、コレクションの受け渡しを回避するにはどうすればよいですか? さらに、内部でキャッシュ データを相互に引き渡さずにこれらの短命のコンテキスト インスタンスを使用する場合、どのように変更追跡の恩恵を受けることができますか? では、接続などのリソースを解放するためにコンテキストが短命である必要がある場合、このためにキャッシュを放棄する必要がありますか? つまり、両方を同時に使用することはできません (接続は短命ですが、キャッシュは長寿命です)。したがって、私の唯一のオプションは、クエリによって返された結果を自分の変数に格納することです.24ページの動機で何が推奨されていないのでしょうか?

私は、WCF を使用して、将来的に多層化される可能性がある WPF アプリケーションを開発しています。Julia の著書にこの例があることは知っていますが、現在はアクセスできません。http://msdn.microsoft.com/en-us/magazine/cc700340.aspx (古い ObjectContext ですが、レイヤー間のコラボレーションの説明には適しています)など、Web 上で他にもいくつか見つけました。そこでは、長寿命のコンテキストが使用されます (ただし、欠点については言及されていますが、これらに対する解決策は提供されていません)。単一の Destinations.Local が失われるだけではありません。クエリによってフェッチされる他のすべてのエンティティも失われることは確かです。

[編集]: Julia Lerman の本をさらに読んだ後、EF にはデフォルトで第 2 レベルのキャッシュがないことに要約されるようです。いくらかの (かなりの、私が思うに) 努力をすれば、本書や MSDN、codeproject などのさまざまな記事で説明されているように、サードパーティのキャッシュ ソリューションを追加することができます。

この問題が DbContext ブックの DbSet.Local に関するセクションで言及されていれば、それは実際には using {} ブロックが終了したときに破棄される第 1 レベルのキャッシュであることがわかっていれば幸いです (これをより透過的にするための私の提案です)。読者)。最初に読んだ後、新しい DbContext インスタンスにもかかわらず、2 番目の using {} ブロックでも、DbSet.Local は常に同じ参照 (Singleton スタイル) を返すという印象を受けました。

しかし、第 2 レベル キャッシュが私の WPF アプリケーションに適しているかどうかはまだわかりません (Julia が分散アプリケーションに関する記事で第 2 レベル キャッシュについて言及しているように)。または、using {} ブロック内の 1 つまたはいくつかのクエリによって、ドメイン モデルの集計ルート インスタンス (DDD、Eric Evans) をメモリに取得し、DbContext を破棄して、集計インスタンスへの参照のみを保持する方法です。長期的なコンテキストを回避する方法は? この決断を手伝っていただければ幸いです。

http://msdn.microsoft.com/en-us/magazine/hh394143.aspx http://www.codeproject.com/Articles/435142/Entity-Framework-Second-Level-Caching-with-DbConte http:// blog.3d-logic.com/2012/03/31/using-tracing-and-caching-provider-wrappers-with-codefirst/