問題タブ [linq-to-entities]

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 投票する
4 に答える
15561 参照

c# - 含むがサポートされていない場合、LINQ to Entities(Entity Framework)でSQLスタイルの「IN」ステートメントをどのように実行しますか?

LINQ to Entities(LINQ to SQLではなく)を使用していますが、「IN」スタイルのクエリを作成するのに問題があります。現時点での私の質問は次のとおりです。

ただし、これを行うと、次の例外がスローされます。

LINQ to Entitiesは、メソッド'Boolean contains(Int64)'メソッドを認識せず、このメソッドをストア式に変換できません。

誰かがこれに対する回避策または別の解決策を持っていますか?

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

linq - エンティティへの Linq、タイプごとのテーブル、および Null 許容の外部キーの関係

タイプごとのテーブルアプローチを適用するエンティティにLinqを使用しています。これは非常にうまくいっています。私は次の設定をしています:

  • 親テーブル
  • 子テーブル (親から継承)
  • グランド子テーブル (子テーブルから継承)
  • リンク テーブル (null 可能な外部キーを持ち、子テーブルへ)

これがデータベース図です

代替テキスト

上記のビデオに続いて、上記のテーブルをモデルに追加するときに、エンティティへの Linq が作成する既定のスキーマに、タイプごとのテーブル アプローチを適用しました。

タイプごとのテーブルを適用する前に:

代替テキスト

タイプごとのテーブルの後:

代替テキスト

次に、プロジェクトをコンパイルしたところ、上の画像で確認できるエラーが発生しました。これを修正するために、外部キーリンクのマッピングに行き、エラーメッセージがうめき声を上げていたchildidフィールドを追加しました。

代替テキスト

次に再コンパイルすると、別のエラーが発生します。

行 147、176 から始まるフラグメントのマッピングの問題: 異なるキーを持つ 2 つのエンティティが同じ行にマッピングされています。これらの 2 つのマッピング フラグメントが、重複するキーを持つエンティティの 2 つのグループを同じ行のグループにマップしないようにします。

これが私が今いるポイントです。問題は、「LinkingTable」の「ChildID」が Nullable であるようです。Not nullable に設定すると、上記のエラーは発生しません。

上記の手順で使用したデータベースとプロジェクトをスカイ ドライブに保存しました。

このエラーを修正する方法を知っている人はいますか?

デイブ

これが修正されたコードです (The Gecko に感謝)

0 投票する
6 に答える
14166 参照

linq-to-sql - エンティティへの LINQ と遅延読み込み

今日の物議を醸しているブログ投稿で、Hackification は、新しい LINQ To Entities フレームワークのバグと思われるものについて次のように主張しています。

顧客を検索するとします。

うまくいきました。それでは、彼女の注文の 1 つを見つけることができるかどうか見てみましょう。

LINQ-to-SQL は子行を見つけます。LINQ-to-Entities は黙って何も返しません。

ここで、データベース内のすべての注文を反復処理するとします。

そして今、私の検索を繰り返します:

わお!LINQ-to-Entities は、子オブジェクトが存在しないことを以前に伝えていたにもかかわらず、突然、子オブジェクトが存在することを伝えています。

私の最初の反応は、これはバグでなければならないというものでしたが、さらに検討した後 (そしてADO.NET チームによってバックアップされた後)、この動作は、Alice がプルされたときに Entity Framework が Orders サブクエリを遅延読み込みしないことが原因であることに気付きました。データコンテキスト。

これは、 order が LINQ-To-Object クエリであるためです。

そして、彼のforeachループ中は、データコンテキストにアクセスしていません:

データコンテキストにアクセスしています。

LINQ-To-SQL は Orders の遅延読み込みプロパティを実際に作成したため、アクセスすると別のクエリが実行され、LINQ to Entities は関連データを手動で取得する必要があります。

さて、私は ORM の大ファンではありません。これがまさにその理由です。必要なすべてのデータを手元に用意するために、背後でクエリを繰り返し実行することがわかりました。たとえば、上記の linq-to-sql クエリは、顧客の行ごとに追加のクエリを実行して注文を取得する場合があります。 .

ただし、これを行わない EF は、最小の驚きの原則に大きく違反しているようです。これは技術的には正しい方法ですが (注文を取得するために 2 番目のクエリを実行するか、ビューからすべてを取得する必要があります)、ORM から期待されるようには動作しません。

では、これは良いフレームワーク設計ですか? それとも、マイクロソフトは私たちのためにこれを考えすぎているのでしょうか?

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

entity-framework - Entity Framework、基準に基づくクエリの作成

誰かがこれを行う方法をもっとよく考えているかどうか疑問に思っていました。私には汚れているように見えるように戻っIQueryable<Member>てくるatm 。ObjectQuery<Member>

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

linq - 異なる LINQ プロバイダーを超える LINQ クエリは可能ですか?

現在、複数のインスタンスをデータ ソースとして登録できるデータ オブジェクトのリポジトリ パターンについて考えていますIQueryable<>が、実行するのはそれほど簡単ではないようです。

LINQ to entities と LINQ To Objects を使用して単純な LINQ クエリを実行しても機能しません。これは一般的に可能だと思いますか?おそらく唯一の解決策は、指定されたプロバイダーを作成することですか?

私のリポジトリでは.Union<>()、すべての IQueryable インスタンスを呼び出し、最終的に LINQ を使用して結果の単一のIQueryable. その結果、1 つIQueryableは完全に無視されました。

0 投票する
11 に答える
2315 参照

.net - Linq 2 SQL または Linq エンティティ

私は新しいアプリケーションの設計を始めていますが、Linq2SQL または Linq2Entities に関する人々の意見と、迅速な開発のためのより優れたテクノロジであると彼らが感じていることを知りたいと思っています。

また、ADO.net データ サービスに関する調査も行っています。

0 投票する
10 に答える
79315 参照

c# - Linq to Entities を使用した「Contains()」回避策?

Silverlight ADO.Net Data Services クライアント API (したがって、Linq To Entities) を使用して、WHERE 句で ID のリストを使用するクエリを作成しようとしています。サポートされていない内容の回避策を知っている人はいますか?

私はこのようなことをしたい:


これを試しました:

しかし、「メソッド 'Any' はサポートされていません」というメッセージが表示されました。

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

entity-framework - Linq to Entities / Entity Framework cross edmx "join"

それぞれが異なるデータベースからのものであり、したがって異なる edmx ファイルからの 2 つのエンティティがあります。ただし、それらの間には推測される関係があります。

FooBarたとえば、多くの があります。

データベース呼び出しを最小限に抑えて、EntityFramework でこの結合を行う最も簡単な方法は何ですか?

ありがとう。

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

entity-framework - Entity Framework - 関連するエンティティに関する質問

Pk/FK 関連付けがある場合、FK ID がデザイナーのエンティティから削除されることに気付きました。クエリステートメントを結合するにはどうすればよいですか?

基本的に、Linq to Entity の優れたビデオ チュートリアルを探しています (申し訳ありませんが、私はオーディオ/ビジュアル学習者です)。

0 投票する
4 に答える
3697 参照

c# - LINQ を使用して、「計算フィールド」によるグループ化を行うにはどうすればよいですか

LINQ to EF を使用しており、次の LINQ クエリがあります。

このように、年ごとにアイテムを分類し、その年のアイテム数を取得するという点で、私は自分がなりたい場所にたどり着きます。(つまり、2001 年 - 10 年、1975 年 - 15 年、2005 年 - 5 年、1976 年 - 1 年) 私が本当にやりたいことは、それらを 10 年ごとに分類することです (つまり、2000 年代 - 15 年、1970 年代 - 16 年)。

Linq ステートメントのグループ句の "by" 部分に "計算フィールド" を含めるにはどうすればよいですか。私が欲しいのは基本的に次のようなものだと思います:

または、より一般的には構文を使用して、より複雑な評価/計算を実行してグループ化を実行できるようにします。何か案は?

編集(更新):

(x => x.Year.Value.ToString().Substring(0, 3) + "0s") - 動作しません - "LINQ to Entities はメソッド 'System.String ToString()' メソッドを認識しません。このメソッドはストア式に変換できません。」

(x.Year / 10 * 10) - 機能的に動作します (ありがとうございます) - 唯一の「問題」は、「s」が末尾にないことです (つまり、1970 対 1970 年代)

とにかくby句に関数を入れることはありますか? つまり、x を this.ManipulateYear(x.Year) で数十年にグループ化 ... または ... x => x.Year.Value.ToString().Substring(0,3) + "0s" ?? 考えられるあらゆるケースをカバーできるように、なんらかのテクニック (関数の呼び出しやラムダ式の使用など) があると便利です。

これについてのみんなの助けにもう一度感謝します。