0

我尝试获取相关实体并收到此错误:对象引用未设置为对象的实例。

请参阅下面我的代码:

public IEnumerable<RUBAnnotation> GetAnnotationsByServiceRequestId(string serviceRequestId)
        {
            List<Annotation> annotationList = new List<Annotation>();

            try
            {
                using (OrganizationServiceProxy organizationProxy = new OrganizationServiceProxy(organisationWebServiceUri, null, userCredentials, deviceCredentials))
                {
                    organizationProxy.EnableProxyTypes();

                    var service = (IOrganizationService)organizationProxy;
                    OrganizationServiceContext orgContext = new OrganizationServiceContext(service);

                    Relationship rel = new Relationship("Incident_Annotation");

                    // get all incidents by incidentId
                    IEnumerable<Incident> incidents = from c in orgContext.CreateQuery<Incident>()
                                         where c.Id == new Guid(serviceRequestId)
                                         select c;

                    return GetAnnotationsEntities(incidents);
                }

            }
            catch (Exception)
            {
                throw;
            }

            return null;
        }

private List<RUBAnnotation> GetAnnotationsEntities(IEnumerable<Incident> incidents)
        {
            List<RUBAnnotation> annotationsList = new List<RUBAnnotation>();

            try
            {

                    foreach (Incident incident in incidents)
                    {
                        foreach (var annotation in incident.Incident_Annotation) // HERE OCCURS THE EXCEPTION!!
                        {
                            if (!string.IsNullOrEmpty(annotation.NoteText))
                            {
                                var customAnnotation = new RUBAnnotation();

                                customAnnotation.Id = annotation.Id.ToString();

                                if (annotation.Incident_Annotation != null)
                                {
                                    customAnnotation.ServiceRequestId = annotation.Incident_Annotation.Id.ToString();
                                }

                                customAnnotation.Message = annotation.NoteText;
                                customAnnotation.CreatedOn = (DateTime)annotation.CreatedOn;
                                customAnnotation.UserId = annotation.CreatedBy.Id.ToString();

                                annotationsList.Add(customAnnotation);
                            }
                        }
                    }
            }
            catch (Exception e)
            {
                throw e;
            }

            return annotationsList;
        }

当我尝试获取 event.Incident_Annotation 时,为什么会出现此错误?我认为 event.Incident_Annotation 是 NULL,但为什么呢?我的所有事件都有最少 1 个或多个注释。

4

1 回答 1

0

必须显式加载相关实体,您可以在此 MSDN 文章中找到更多信息:

MSDN - 访问实体关系

于 2013-06-08T23:24:05.587 回答