0

Linq を使用して、データベース テーブルからカスタム選択を行いたいです。ORM ソリューションとして LLBGEN を使用します。

GetMulti(null) メソッドを呼び出さない限り、エンティティ コレクション クラスに対して LINQ クエリを実行できません。

最初にすべてのテーブルを抽出せずに、LLBGEN に対して LINQ クエリを実行することは可能ですか?

BatchCollection batches = new BatchCollection();                
BatchEntity batch = batches.AsQueryable()
.Where(i => i.RegisterID == 3)
.FirstOrDefault(); // Exception: Sequence don't contains any elements

batches = new BatchCollection();                
batches.GetMulti(null); // I don't want to extract the whole table.
BatchEntity batch = batches.AsQueryable()
.Where(i => i.RegisterID == 3)
.FirstOrDefault(); //Works fine
4

1 に答える 1

4

LINQ を使用してデータベースにクエリを実行するには (LINQ 構文を使用して列挙可能なコレクションを操作するのとは異なります)、yourrootnamespace.Linq アセンブリの LLBLGen に付属する LinqMetaData プロバイダーを使用する必要があります。このアセンブリをプロジェクトに追加すると、次のようなものを使用して db クエリを作成できます: (LLBL ドキュメントから)

LinqMetaData metaData = new LinqMetaData();
var q = from c in metaData.Customer
        where c.Country=="USA"
        select c;

上記の例では、LINQ 構文を使用してコレクションで where 句を実行していますが、これは LLBL やデータベースでクエリを実行することとは関係ありません。そのため、空のコレクションでは機能しませんが、満たされたコレクションでは機能します。

LINQ to LLBLGen を使用してデータベースにクエリを実行する詳細については、LinqMetaData を参照してください。

于 2010-03-08T18:55:14.337 に答える