問題タブ [objectquery]

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 に答える
1724 参照

entity-framework - EntityFramework ObjectQuery から SQL コマンドテキストとパラメーターを取得する

空間、インデックスヒントなど、EF でサポートできないクエリがいくつかあります。ただし、ほとんどのデータは EF フレンドリーであり、linq プロバイダーを使用できます。

例: Person、PersonAddress、および Address テーブルがあります。On Address 検索の領域を定義するために使用する必要がある空間インデックスがあります。それに基づいて、Person.BirthDate などでさらにフィルタリングしたいと考えています。これは既に T-SQL で実装していますが、固定パラメーターのみを使用しています。

代わりに、空間クエリとエンティティ フレームワーク クエリを組み合わせたいと考えています。そのためには、SQL コマンド テキストとパラメーターを ObjectQuery から取得する必要があります。それらを結合すると、これらは簡単になります。残念ながら、ObjectQuery.ToTraceString() を使用してしかコマンド テキストを取得できません。

私は linqpad を使用していますが、パラメーターとテキストの両方を取得できることがわかりました。これは可能である必要があります。

これを達成するための最良の方法は何ですか?

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

asp.net-mvc - Entity Framework /.NETMVCの同じテーブルに個別の属性をリンクする

私はこれに対する答えを見つけるために何時間も費やしました、そして空っぽになりました。

私は.NETとMVCにまったく慣れていません。MvcMusicStoreチュートリアルを完了し、より複雑なプロジェクトに取り組み始めましたが、同様のプロジェクトです。私はこの分野での私の経験と知識のレベルが低いことを説明するためにこれを言うだけであり、どんな反応もこれを考慮に入れることができることを願っています。

とにかく、私が抱えている問題は、2つの属性「TeamId1」と「TeamId2」を持つ1つのテーブル「Fixtures」があり、これらは両方とも別のテーブル「Team」にマップされていることです。

私が欲しいのは、各フィクスチャにTeam1とTeam2の両方のチームデータも含めることです。私はこれまでObjectQueryのIncludeメソッドを使用して、同様の操作を問題なく実行してきました。

ただし、これを行ったとき、.NET、MVC、Entity Frameworkなどは、満足のいくものではなかったことがわかりました。多くの実験の結果、外部キーが参照するテーブルと同じ名前である場合にのみ機能することがわかりました。基本的に、私の属性には「TeamId」という名前を付ける必要があります。そうしないと、機能しません。このテーブルにマップする必要のある別の属性がなければ、これは問題にはなりません。明らかに、テーブルに同じ名前の2つの属性を含めることはできません。だから私は立ち往生しています。

「TeamId」以外の属性名を使用してテーブルにマップできると想定することしかできませんが、これを行う方法を説明する手順/以前の投稿/ドキュメントが見つかりません。

フィクスチャデータを分割し、フィクスチャテーブルを作成してから、チームIDやスコアなどを保持する別のテーブルを作成する可能性を検討しましたが、各フィクスチャに2つ以上のチームが存在しないことを考えると、これは少しやり過ぎのようです。だから私はこれをプランBと呼んでいます。

可能であれば、この問題を回避したくありません。EFとObjectQueryを使用して問題が発生するのは不合理ではないようです。また、結合を指定して手動でクエリを作成できることも認識しています。残念ながら、私のLINQの経験は限られており、これまで試したたびに1つのテーブルでの複数の結合がうまくいきませんでした。

したがって、私が本当に知る必要があるのは、LINQに頼ったり、Fixturesテーブルを再構築したりせずに、上記を実現するために使用できる設定またはコードがあるかどうかです。

編集: 関連モデルのスクリーンショット

この画像は、関連するモデルを示しています。現状では、これは機能しますが、クエリは明らかに「TeamId1」列にリンクされた1つのチームインスタンスのみを返します。コメントされたコードは、モデルに必要なものを示しています(私の限られた以前の経験が示している限り)。そのため、私のモデルは、2つの別々の列にリンクされた2つの別々のチームを保持しています。

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

entity-framework-4 - EF 4 を使用したオブジェクト クエリ パターンとリポジトリ パターン

リポジトリ パターンとクエリ オブジェクト パターンに関する質問です。私は EF 4 を使用しており、VS 2010 で ADO.NET POCO Entity Generator を使用してデータベース モデルから POCO クラスを生成しました。edmx ファイルと tt ファイル (POCO クラス) は 2 つの異なるプロジェクトにあります。

私のリポジトリは、DocumentRepository や UserRepository などのドメイン固有のものです。私のデータベース モデルは、ドメイン オブジェクトを 1 つ以上のデータベース テーブルに (またはその逆に) 変換するためにマッパーを実装したほど、ドメイン モデルとは異なります。1 つの例は、私の Document ドメイン クラスがデータベース内の 3 つのテーブル (したがって POCO クラス) としてモデル化されていることです。

このような場合にドメイン オブジェクトを使用する場合、クエリ オブジェクト パターンをどのように実装しますか? 私の見方では、ドメイン クラスではなく、POCO クラスに基づいてクエリ オブジェクト ベースを作成する必要がありますか? しかし、それはリポジトリのパターンを壊しませんか?

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

c# - IQueryableは、Count c#を呼び出すとnullを返します

次のクエリからカウントを取得しようとすると問題が発生します。

ここで、UsersViewは、usersというEFエンティティから入力されるクラスです(上記のコードの最初の行を参照してください)。

これは、UsersViewクラスのクラス定義です。

行を実行しようとすると、foo.Count()はNull例外を返します。これは、ConferenceRole列がデータベースでNullを許可していることが原因である可能性があります。

今私が理解できないのは、ObjectQueryで同じクエリを直接呼び出すと、レコードの数(つまり、foo2.Count()を呼び出す)が例外なく返されるということです。

上記と同じクエリを実行できますが、代わりにIQueryable usersViewオブジェクトを使用できますか?

(entities.usersエンティティに直接クエリを実行するのではなく、usersViewオブジェクトを使用することが重要です)

編集

以下は、PopulateUsersViewメソッドのコードです

ありがとう

アップデート...

みんなありがとう、私はついにIQueryableオブジェクトとObjectQueryオブジェクトの違いに対する良い答えを見つけました。

解決策として、ConferenceRoleがnullであるかどうかを確認してから、多くの人が言っているように、containsメソッドで確認しています。

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

c# - インクルード使用時の ObjectContext Closed エラー?

動的WhereおよびInclude. 以下のコードを使用していますが、インクルード リストにあるナビゲーション プロパティにアクセスしようとすると、オブジェクト コンテキストが閉じているというエラーが表示されます。

これらのオブジェクトをロードすることになっていない.Include()ので、ObjectContext を開いたままにしておく必要はありませんか?

エラーの原因となるコード:

私はEFが初めてで、まだそれを理解しようとしているので、ここである種のばかげた間違いを犯しているに違いないと感じています。

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

c# - C#でのオブジェクトの要素のクエリ

C# でオブジェクトからクエリ結果を取得しようとすると問題が発生します。

オブジェクト要素を返す linq クエリを実行し、C# (サーバー側) ですべての要素の値を取得したい...

私はこれを行うことはできませんし、理由がわかりません!

私は試した:

その他....

オブジェクトの種類は次のとおりです。

オブジェクトの値を取得するにはどうすればよいですか?

どうもありがとう!

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

entity-framework-4 - EF4 動的選択と where ステートメントを使用してクエリを作成する方法

必要なプロパティを指定できるモデル用のある種の動的ローダーを作成しようとしています。その主な目的は、個々のモデルREST APIに関する動的情報を提供するを作成することです。JSON

API、たとえばによってアクセスされます /api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo,bar,baz

この目的のために、 ScottGu のブログDynamic LINQで説明されているようなものを使用しました。問題は、結合を使用して複数のテーブルに対してクエリを実行し、異なるテーブルからデータをロードする必要があることです。この場合、私が知る限り、これは実行できません。

今は、クエリを好きなように作成できるObjectQuery<DbDataRecord>アプローチを使用しEntity SQLていますが、この場合、コンパイラの検証が失われ、リファクタリングが難しくなります。

私の質問は、この種の問題に対するベスト プラクティス シナリオはありますか? そして、他のもので達成する方が簡単かもしれませんORMか?

ご挨拶

ルスラン A.

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

c# - Linqの結果をJSONに直接シリアル化する

linq to sql dbを実行し、結果をVAR変数に入れるWebサービスを開発しています。次に、JavaScriptシリアライザー(c#)を使用して、VAR内の結果をjson形式にシリアル化します。このようなもの:

しかし、私はこのようなエラー応答を受け取ります:

DataContractAttribute属性でマークを付け、シリアル化するすべてのメンバーをDataMemberAttribute属性でマークすることを検討してください。タイプがコレクションの場合は、CollectionDataContractAttributeでマークすることを検討してください。サポートされている他のタイプについては、Microsoft.NETFrameworkのドキュメントを参照してください。

LINQの結果をJSONに直接シリアル化するにはどうすればよいですか?すべての回答をありがとう!エンリコ

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

c# - Windows7でWLANカードを見つける方法

以下のコードは、WLANカードを決定するまでWin XPで正常に機能しますが、Windows7ではwmiObjectsカウントはゼロです。

誰かがそれをWindows7で動作させるための知識を持っていますか?

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

security - パーミッション ビジネス ロジックの ObjectQuery.Include メソッドのフィルタリングの問題

BL と Entity Framework DAL の間にミドルウェア層を作成し、アプリケーションのユーザー権限ビジネス ロジックによってデータをフィルター処理しました。私のレイヤーは、「フィルタリングされていない ObjectSet」のインスタンスを持つ IObjectSet を実装しており、ObjectSet が使用されているときは常にフィルター式が実行されています。メソッド「インクルード」の代わりに、すべての作業格子。「フィルタリングされていない ObjectSet」を ObjectQuery に変換し、ObjectQuery.Include メソッドを使用する拡張メソッドを作成するソリューションを見つけましたが、このソリューションは権限フィルタリングのバイパスを引き起こす可能性があります。

例えば:

テーブル名「アイテム」には列 {Item_Id,Owner,Item_Type_Id} があります。このテーブルには、所有者==ユーザーであるアイテムのみをユーザーが表示できる権限ロジックがあります。テーブル「Item_Types」には権限ロジックがありません。

実行することにより: PermittedDAL. Items.ToArray() – current_user==Owner であるアイテムのみを取得します。Item_Types.Include("Items") 問題!! - すべてのアイテムを取得します。

ありがとう