使用Datacontext的InvalidOperationException

时间:2012-02-16 00:19:27

标签: c# dynamics-crm datacontext crm invalidoperationexception

我运行时遇到InvalidOperationException(它表示“无法确定属性名称”)。我检查了网但没有找到解决方案。它发生在foreach(联系人中的var c)行。

DataContext ctx = new DataContext("CrmConnection");

        var contacts = from c in ctx.contacts
                       where c != null
                       select new
                       {
                           acct = c.parentcustomerid == null ? "" : c.parentcustomerid.name,
                           last = c.lastname == null ? "" : c.lastname,
                           first = c.firstname == null ? "" : c.firstname
                       };

        List<string> lines = new List<string>();

        try
        {
            foreach (var c in contacts) *ex*
            {
                Console.WriteLine(c.acct);
                Console.ReadLine();
                lines.Add(string.Format("{0}\t{1}\t{2}", c.acct, c.last, c.first));
                Console.WriteLine(c.acct);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(String.Format("Error: {0}", ex));
        }

如果您有任何想法,请告诉我。谢谢。

3 个答案:

答案 0 :(得分:0)

我怀疑c.parentcustomerid是相关对象的id。它没有您尝试访问的名为name的属性。

如果要获取父客户的名称,您想要访问“parentcustomerid”指向的实际Customer对象。

如果您想要的是帐户ID(从acct属性中猜测),那么只需更改

即可
acct = c.parentcustomerid == null ? "" : c.parentcustomerid.name

代表

acct = c.parentcustomerid == null ? "" : c.parentcustomerid

答案 1 :(得分:0)

执行您的查询时发生此异常,当在联系人上下文迭代尝试从sql执行您的查询时。我认为发生此错误是因为您的上下文模型未正确映射到您的数据库,可能是不同的表名或属性。

答案 2 :(得分:0)

where c != null

是问题吗?您检查的是哪个字段为空c.parentcustomerid !=null?您无法对实体进行空检查。

此外,名称属性off Id将使用LINQ to Crm

进行查找