【发布时间】:2014-10-22 16:42:14
【问题描述】:
我在这里碰壁了,事情正在发生,它们似乎违反直觉。
我有一个实体集合,大约 40k,我正在尝试将其转换为视图模型。 我正在使用以下代码来执行此操作。
var ents= (from ent in entities.ents
where ent != null && ent.Prop1 != null && ent.Prop2 != null
select ent).ToList();
ConcurrentBag<VmEnt> filtered = new ConcurrentBag<VmEnt>();
Parallel.ForEach(ents.AsParallel(), ent =>
{
var vm = new VmEnt
{
Name = ent.Name,
Prop1 = new VmProp1
{
Id = ent.Prop1.Id,
Name = ent.Prop1.Name,
},
Prop2= new VmProp2
{
Id = ent.Prop2.Id,
Images = ent.Prop2.Images.Select(y => y.ImageUrl).ToList()
},
Prop3= ent.Prop3.Select(y => new VmProp3
{
Id = y.Id,
Name = y.Name
},
};
filtered.Add(vm);
});
我遇到的问题是在并行循环中存在 ent.Prop1 的空引用,即使在这些应该被过滤掉之后也是如此。我错过了一些非常简单的东西吗?还是我做错了什么?
【问题讨论】:
-
你确定不是
Prop3是空的吗?有什么例外? -
异常是Prop1上的空引用,这是不寻常的,因为Ent中的FK字段Prop1Key不为空。
标签: c# .net linq entity-framework linq-to-entities