我运行时遇到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));
}
如果您有任何想法,请告诉我。谢谢。
答案 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
进行查找