我们正在使用SQL Server,应用程序是用DBML开发的。现在由于急切加载的功能,我遇到了问题。我有一个与表 B 有关系的表 A。(A -> B)。现在,当我尝试加载表 A 时,它将获取表 B 的所有字段.罪魁祸首是表 B 有 2-3 列,非常重,包含byte array
数据,并且由于这些列,获取表 A 的数据也需要太多负载。
问题
当我获得表 A 时,我可以有这样的方法,我可以只加载表 B 的几列(不是所有列)吗?
我试过
什么我收到此错误:
指定的表达式必须采用 p.A 的形式,其中 p 是 参数,A 是属性或字段成员。
当我尝试使用以下代码时 -
DataContext2.DeferredLoadingEnabled = false;
DataLoadOptions options = new DataLoadOptions();
options.LoadWith<A>(x => x.Campaign);
options.LoadWith<A>(x => x.AnotherTable);
options.LoadWith<A>(x => x.B.Select(o => new B
{
Id = o.Id,
Name = o.Name,
Person = o.Person,
}).ToList());
DataContext2.LoadOptions = options;
只需使用 join
并仅select
必要的列:
var yourQuery = (from t_A in dbContext.Table_A
join t_B in dbContext.Table_B on t_A.ID equals t_B.ID
//use where operator to filter rows
select new {
Id = t_B.Id,
Name = t_B.Name,
Person = t_B.Person
// any field you want from your query
}).ToList();