2011-09-16 7 views
1

Googleとこのサイトを検索してみましたが、これを見つけるのは難しかったので、これはすでに質問されてどこかに回答されていますが、見つけられませんでした。LINQによるイメージデータ型の扱い方

とにかく、ドキュメントを保持するためにイメージデータ型を使用してSQL 2005データベースにドキュメントを格納するコードを継承しました。このメソッドを使用するときにクライアント側でドキュメント列を使用しないため、ドキュメント列を含むすべての列を返すテーブルを照会して、これを非常に高価な操作にするLINQメソッドがあります。

は、ここで現在のコードの抜粋です:私は、ドキュメントの列を無視したいのですが、この方法の負担を軽減するために

  rtnList = (from c in pdc.View_ActiveDocumentRepositories 
        select new Document(c.ItemId, c.DocumentId, c.Extentsion, c.Filename, c.Document.ToArray(), 
      c.ModifiedDate, c.ModifiedBy, dSvc.GetStatus(c.Status), c.ApprovedDate, c.ApprovedBy, 
      c.Active)).ToList(); 

  1. Document欄への参照を削除します(使用しない場合でも、これは動作しますか、ActiveDocumentRepositoriesオブジェクトを通してデータが返されますか?)。
  2. [ドキュメント]列を除外する新しいビューを作成します。
  3. Document列を除外するストアドプロシージャ。 (ただし、#2と同じである必要があります)

ベストアンサーにはどのような考えがありますか?ありがとう。

+0

Linqクラスの生成方法については言及していませんが、http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining- our-data-model-classes.aspx Delay/Lazy Loadingについて語る – sgmoore

答えて

1

IQueryableの場合は、select newからドキュメントを削除すると、生成されたselect句から削除する必要があります。

(明らかに私はリポジトリで何が起こっているのか分からないので、私は 'should'と言っています)。

このアプローチの欠点は、このリポジトリに対してクエリを実行するたびにBLOBを省略すると考える必要があることです。私はリポジトリでIQueryableを公開することについて長い議論を始めることができますが、要するに、リポジトリに「軽量」ドキュメントオブジェクトを取得するための専用メソッドを持たせることにします。

+0

+1:LINQ to SQLとLINQ to Entitiesは、LINQ to SQLとLINQ to Entitiesの両方で、それらが生成するSQLクエリの 'Document'を省略します。最終的な予測が評価される。 LINQPadを使用して生成されたSQLクエリを簡単に見ることができます。 – StriplingWarrior

+0

私はDocument Columnを除外した新しいビューを作成しました。助けてくれてありがとう。 –

+0

ようこそ。ビューが適切な解決策です。 –

関連する問題