風語·深蓝

Agile Methodology, HeadStorm And MindMap, they will change me.

导航

Entity Framewok中获取实体对象的部分属性

Posted on 2009-06-25 20:57  風語者·疾風  阅读(558)  评论(1编辑  收藏  举报

因为在设计中的遗漏,把一个视图中包含大量Null值的列设定为了主键,导致在查询的时候,会把所有主键为Null值的对象都映射为第一条Null值的数据……噩梦……

因此,我需要获取数据的时候只取部分属性,把主键列屏蔽掉。写法稍有点复杂,做个标记:

 

IList<SAPUserView> l = 
SAPUserViews.Select(b
=> new { LogonID = b.LogonID, EmployeeNo = b.EmployeeNo, NickName = b.NickName }).ToList()
    .Select(r
=>new SAPUserView() { LogonID = r.LogonID == null ? String.Empty: r.LogonID,  EmployeeNo = r.EmployeeNo, NickName = r.NickName}).ToList();

 

需要留意的是为什么不第一次Select方法的时候就直接Select(b=>new SAPUserView(){...}:具体原因不详,但是那样写会抛出异常:
NotSupportedException: The entity or complex type 'WorkFlowDBModel.SAPUserView' cannot be constructed in a LINQ to Entities query.
必须转换为匿名类型的集合后重新Select一次。