私の状況
いくつかのリストを含む ac# オブジェクトがあります。これらのリストの 1 つは、たとえば、c# の「SystemTag」オブジェクトのリストであるタグのリストです。このオブジェクトを最も効率的な方法でインスタンス化したいと考えています。
私のデータベース構造には、次のテーブルがあります。
- dbObject - 私の c# オブジェクトに関するいくつかの基本的な情報を含むテーブル
- dbTags - 利用可能なすべてのタブのリスト
- dbTagConnections - TagID と ObjectID の 2 つのフィールドを持つリスト (オブジェクトが複数のタグを持つことができるようにするため)
(私は他にもいくつかの同様のタイプのデータを持っています)
これが私が今やっている方法です...
- ID を使用して DB からオブジェクトを取得する
- DB オブジェクトを「オブジェクト ファクトリ」パターンに送信すると、タグ (およびその他のリスト) を取得する必要があることがわかります。次に、C# オブジェクトの ID を使用して DAL レイヤーに呼び出しを送信します。
- DAL レイヤーは DB からデータを取得します
- これらのデータは、タグに変換される「TagFactory」パターンに送信されます
- オブジェクト ファクトリに戻ります
これは非常に非効率的であり、データベースへの呼び出しが多数あります。私は4種類以上のリストを持っているので、これは特に問題を引き起こします。
私は何を試しましたか?
SQL はあまり得意ではありませんが、次のクエリを試してみました。
SELECT * FROM dbObject p
LEFT JOIN dbTagConnection c on p.Id= c.PointId
LEFT JOIN dbTags t on c.TagId = t.dbTagId
WHERE ....
ただし、これはタグ接続と同じ数のオブジェクトを取得するため、結合はこれを行うための良い方法ではないと思います。
他の情報...
- .NET Framework 4.0 の使用
- LINQ to SQL を使用する (DAL オブジェクトから変換するための BLL の Factory パターンを含む BLL および DAL レイヤー)
...
それで、これをできるだけ効率的に解決するにはどうすればよいですか?:-) ありがとう!