首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityReference导致运行时错误

EntityReference导致运行时错误
EN

Stack Overflow用户
提问于 2013-04-29 22:19:32
回答 1查看 533关注 0票数 0

在过去的48小时里,我才开始钻研LINQ,并能得到一点帮助。

我构建了以下查询,向我提供了来自CRM的关于每个联系人及其公司的大量数据:

代码语言:javascript
复制
var contacts =
        (
            from c in context.ContactSet
            join m in context.py3_membershipSet on c.ContactId equals m.py3_Member.Id
            where m.statuscode.Value == 1
            orderby c.LastName
            select new
            {
                FirstName = c.FirstName,
                LastName = c.LastName,
                BranchCode = c.py3_BranchArea,
                Branch = (c.FormattedValues.Contains("py3_brancharea") ? c.FormattedValues["py3_brancharea"] : "N/a"),
                JobTitle = c.JobTitle,
                Organisation = c.ParentCustomerId.Name,
                joinedAsCode = c.py3_SOLACEMemberJoinedAs,
                JoinedAs = (c.FormattedValues.Contains("py3_solacememberjoinedas") ? c.FormattedValues["py3_solacememberjoinedas"] : "N/a"),
                Expertise = c.py3_SOLACEMemberAreasofExpertise
            }
        );

然后,我使用一个简单的foreach循环遍历每个记录并写出它:

代码语言:javascript
复制
foreach (var a in contacts)
        {
            Response.Write("<span style='font-size:small'>Firstname: " + a.FirstName + " | LastName: " + a.LastName + " | Job Title: " + a.JobTitle + "| Org: " + a.Organisation + " | Branch: " + a.Branch + " | Expertise: " + a.Expertise + " | Membership Product: " + a.JoinedAs + "</span><br/>");
        }

但是,在运行页面时,我会得到一个“对象引用未设置为对象实例”错误。该错误提供了以下信息,目前对我来说没有任何意义:

代码语言:javascript
复制
[NullReferenceException: Object reference not set to an instance of an object.]
lambda_method(Closure , <>f__AnonymousTypef`2 ) +658

从消除的过程中,我知道问题在于试图写出与'a.Organisation‘有关的'c.ParentCustomerId.Name’。

我可以看到这个LINQ打开了LinqPad并显示它有四个子级,即:

  • Id
  • LogicalName
  • 名字
  • 扩展数据

所以我知道我想要'c.ParentCustomerId.Name',但是我不知道为什么我会有这个问题。某些记录(实体?)可能但不太可能。这是没有价值的。

在获取这些数据方面,我是否做得不对?还是简单地说,当记录为空/空时,我没有用某种默认数据填充它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 22:21:48

您只需要在使用包含或访问可能为空或不为空的东西上的子属性时添加一些保护:

代码语言:javascript
复制
FirstName = c.FirstName,
LastName = c.LastName,
BranchCode = c.py3_BranchArea,
Branch = (c.FormattedValues != null && 
          c.FormattedValues.Contains("py3_brancharea") ?
          c.FormattedValues["py3_brancharea"] : "N/a",
JobTitle = c.JobTitle,
Organisation = c.ParentCustomerId != null ? c.ParentCustomerId.Name : "N/a",
// ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16289198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档