0

我想使用 Linq 从数据库表中进行自定义选择。我们使用 LLBGEN 作为 ORM 解决方案。

我不能对实体集合类进行 LINQ 查询,除非我调用它的 GetMulti(null) 方法。

是否可以在不先提取所有表的情况下对 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 提供程序。一旦你将此程序集添加到你的项目中,你可以使用这样的东西来创建你的数据库查询:(来自 LLBL 文档)

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

在上面的示例中,您使用 LINQ 语法对集合执行 where 子句,但这与 LLBL 或对数据库执行查询没有任何关系。这就是为什么它不适用于空集合,但确实适用于填充集合。

更多地查看LinqMetaData,了解使用 LINQ to LLBLGen 查询数据库的细节。

于 2010-03-08T18:55:14.337 回答