我想使用Linq从数据库表中进行自定义选择。我们使用LLBGEN作为ORM解决方案。
我不能对Entities Collection Class进行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
答案 0 :(得分: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或在数据库上执行查询无关。这就是为什么它不适用于空集合,但对填充集合起作用。
了解使用LINQ to LLBLGen查询数据库的具体细节LinqMetaData。