問題タブ [linq-to-sql]
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.
linq - LINQ について学ぶ
概要
このサイトで私がよく尋ねたものの 1 つがLINQです。私が尋ねた質問は広範かつ多様であり、多くの場合、その背景にはあまり背景がありません。そのため、Linq で得た知識を統合するために、LINQ について学び続けながら、追加情報で維持および更新する目的でこの質問を投稿しています。
また、LINQ について学びたいと考えている他の人々にとって役立つリソースになることを願っています。
LINQとは?
MSDNから:
LINQ プロジェクトは、言語に統合されたクエリ、セット、および変換操作を含む、.NET Framework の一連の拡張機能のコードネームです。C# と Visual Basic をクエリのネイティブ言語構文で拡張し、これらの機能を利用するためのクラス ライブラリを提供します。
これが意味することは、LINQ は、共通の構文を使用してさまざまなデータソースをクエリする標準的な方法を提供するということです。
LINQ にはどのような種類がありますか?
現在、Microsoft が提供するいくつかの異なる LINQ プロバイダーがあります。
- Linq to Objectsを使用すると、任意の IEnumerable オブジェクトに対してクエリを実行できます。
- オブジェクト指向の方法でデータベースに対してクエリを実行できるLinq to SQL 。
- XML ドキュメントのクエリ、読み込み、検証、シリアル化、および操作を可能にするLinq to XML 。
- Andreiが提案したLinq to Entities
- Linq からデータセットへ
他にもたくさんありますが、その多くはここにリストされています。
利点は何ですか?
- 複数のデータソースを照会する標準化された方法
- クエリのコンパイル時の安全性
- メモリ内オブジェクトでセットベースの操作を実行する最適化された方法
- クエリをデバッグする機能
では、LINQ で何ができるでしょうか。
ChookはCSV ファイルを出力する方法を提供します
Jeffは配列から重複を削除する方法を示します
Bob はデータテーブルから個別の順序付きリストを取得します
Marxidadは配列をソートする方法を示しますDana はLinq を使用したクイックソート
の実装を支援します
どこから始めれば?
GateKiller の質問からのリンクの要約を以下に示します。
Scott Guthrie は、彼のブログで Linq の紹介を提供していますMSDN
の LINQ の概要
ChrisAnnODellはチェックアウトすることを提案します:
LINQ を使用するには何が必要ですか?
Linq は現在、VB.Net 9.0 および C# 3.0 で利用できるため、完全なメリットを得るには Visual Studio 2008 以降が必要です。(いつでもメモ帳にコードを記述し、MSBuild を使用してコンパイルできます)
C# 2.0 で Linq のようなクエリを実行できるLinqBridgeというツールもあります。
LINQ を使用したヒントとコツ
この質問には、LINQ を使用するいくつかのトリッキーな方法があります
linq-to-sql - Linq to SQL - 基になる列の長さ
しばらくの間、Linq to SQL を使用してきましたが、非常に便利で使いやすいことがわかりました。私が過去に使用した他の ORM ツールでは、通常、データベースから入力されたエンティティ オブジェクトには、データベース内の基になるデータ列の長さを示すプロパティがあります。これは、たとえば、ユーザーが入力した入力の長さを制限するために、テキスト ボックスに MaxLength プロパティを設定できるデータ バインディングの状況で役立ちます。
Linq to SQL を使用して基になるデータ列の長さを取得する方法が見つかりません。これを行う方法を知っている人はいますか?助けてください。
oop - dbml の XRef 関係
したがって、次のようなデータベーススキーマがあります。
ユーザー
のユーザー
ID
RoleUserXRef
RoleUserId
RoleId
UserId
ロール
RoleId
名
User & RoleUserXRef と RoleUserXRef & Role の間に定義された外部キーを使用します。基本的に、ユーザーとロールの間には 1 対多の関係があります。
生成された User クラスに、ユーザーが割り当てた Roles のリストがあるように、これを dbml でモデル化するにはどうすればよいでしょうか?
c# - エンティティをデータ コンテキストにアタッチする
LINQ to SQL では、エンティティをアタッチする前に、エンティティが既にデータ コンテキストの一部であるかどうかを確認することはできますか?
それが役立つ場合は、少しコンテキスト...
私はglobal.asax
ヘルパーメソッドとしてこのコードを持っています。通常、リクエスト間では、これは問題になりません。しかし、サインインした直後に、これが複数回呼び出され、2 回目はMember
オブジェクトが作成されたのと同じ作業単位にオブジェクトをアタッチしようとしてしまいます。
linq-to-sql - 共有ホスト上のLinq 2 SQL
最近、共有ホスト上の linq で問題が発生しました。
ホストは Shared Intellect で、フレームワークの v3.5 をサポートしています。ただし、SP1 がインストールされているかどうかはわかりません。私の疑いは、彼らはそうではないということです。
News
次の構造を持つ単純なテーブルがあります。
私の目標は、このテーブルから最新の 3 つのレコードを表示することです。私は最初に D&D メソッド (知っています、知っています) を使用し、linq データソースを作成しましたが、結果を希望どおりに制限する方法を見つけることができなかったので、それを削除して次のように書きました。
これは私のローカルマシンで完全に機能しました。
ただし、すべてを共有ホストにアップロードすると、次のエラーが表示されました。
Google でエラーを検索しようとしましたが、成功しませんでした。次に、想像できるあらゆる方法でクエリを変更しようとしました。where/orderby パラメーターのさまざまな組み合わせを削除し、クエリを 1 つの列に制限し、Take コマンドを削除しました。
したがって、私の質問は3つの部分に分かれています:
- 他の誰かがこれに遭遇しましたか? もしそうなら、「迅速な」修正はありますか?
- データソースを使用して行を制限する方法はありますか?
- 共有ホストが実行しているフレームワークのバージョンを特定する方法はありますか (私は行っており、回答を待っています)
linq - NHibernate と LINQ to SQL の比較
実際のプロジェクトでどちらのテクノロジも使用したことがない人として、これら 2 つのテクノロジがどのように相互に補完し合い、機能がどの程度重複しているかを知っている人はいるでしょうか?
visual-studio - Visual Studio がアセンブリの読み込みに失敗する原因は何ですか?
私は、データ アクセスに Linq to Sql を利用する適切なサイズのソリューション (13,000 を超える LOC、5 つのプロジェクト) を喜んでコーディングしていました。突然、通常のビルドを実行したところ、甘くてあいまいなメッセージを受け取りました。
エラー 1 C:\xxx\xxx.dbml の検証エラーのため、ビルドに失敗しました。ファイルを開き、エラー リストの問題を解決してから、プロジェクトの再構築を試みます。C:\xxx\xxx.dbml
何週間もデータ アクセス レイヤーに触れておらず、DBML ファイルに何の調整も加えられていませんでした。レイアウト ファイルの再作成、コピーの作成、Visual Studio の再起動後 (ファイル レベルの破損の場合) に既存のファイルをプロジェクトに再度追加するなど、無謀なトリックをたくさん試しました。すべて役に立たない。
Visual Studio Skills +5 タリスマンを身に着けるのを忘れたので、いろいろと調べてみたところ、Visual Studio がアセンブリを正しく読み込んでいないため、パッケージをリセットするという唯一の答えが見つかりました。「 devenv.exe /resetskippkgs 」を実行した後、実際には、dbml ファイルを DAL プロジェクトに追加し直して、ソリューションを再構築することができました。
直ってよかったですが、むしろこの経験から理解を深めたいと思います。Visual Studio 2008 でこれがどのように、またはなぜ発生するかを知っている人はいますか?
新しい編集: 2008 年 10 月 30 日 これは、私に起こったことで はありません。Rich Strahl は最近、同じ経験について 彼の「ウェブログ」に書いています。彼は、同じ問題を抱えた別のブログにリンクし、同じアクションを使用しました。
この最初の投稿以来、この問題に数回遭遇したため、これはランダムな問題ではないと思います。誰かが決定的な答えを見つけたら、投稿してください。
.net - Linq To SQL: 結合されたテーブルの 1 つのフィールドのみを熱心に読み込むことはできますか?
フォアキー「ProductID」を持つ「注文」テーブルが1つあります。
パフォーマンスを向上させるためにLazyLoadを使用せずに、 product nameを使用してグリッドに注文を表示したいのですが、DataLoadOptionsを使用すると、すべてのProductフィールドが取得されます。
最初のクエリで製品名のみを取得する方法はありますか? DBML で属性を設定できますか?
この表では、「外部キー値」は Linq To SQL で「可視」であると書かれていますが、これが何を意味するのかわかりません。
編集:解決策がないかどうかよくわからないため、タイトルを変更しました。
誰も同じ問題を抱えていないとは信じられません。これは非常に一般的なシナリオです。
asp.net - Linq-to-sqlDataContextでクエリを追跡する方法
ハーディングコードポッドキャスト14で、stackoverflowがリクエスト中に実行されたクエリをページの下部に表示したと誰かが述べています。
それは私には素晴らしいアイデアのように思えます。ページが読み込まれるたびに、実行されるSQLステートメントとDBラウンドトリップの総数を知りたいです。誰かがこの問題に対するきちんとした解決策を持っていますか?
許容できるクエリ数はいくつだと思いますか?ページをレンダリングするために30を超えるクエリが必要な場合、開発中にアプリケーションで例外がスローされる可能性があると考えていました。
編集:私は私の質問を明確に説明していなかったに違いないと思います。HTTPリクエスト中に、Webアプリケーションが12個以上のSQLステートメントを実行する場合があります。これらのステートメントを、ステートメントの数とともにページの下部に追加したいと思います。
これが私の解決策です:
DataContextが書き込むことができるTextWriterクラスを作成しました。
DataContextのコンストラクターで、ロガーをセットアップします。
最後に、Application_OnEndRequest
イベントを使用して結果をページの下部に追加します。
c# - SQLMetalなどのLINQツールをアクセスデータベースで使用できますか?
私は自分自身に次の概念を教えるために小さなデータベースアプリケーションを作成しています
- C#プログラミング
- .Net3.5フレームワーク
- WPF
- LINQ ORM
データベースとしてMicrosoftAccessを使用したいのですが、SQLMetalを使用してMicrosoftAccessデータベースからORMコードを生成できるかどうかについての言及が見つからないようです。
これが可能かどうか誰かが知っていますか?
そうでない場合、使用できる小さなデータベースまたは組み込みデータベースはありますか?この時点では、SQLExpressはやり過ぎだと思います。