1

Я получаю InvalidOperationException, когда я запускаю это (он говорит, что «невозможно определить имя атрибута»). Я проверил сеть, но не нашел решения. Это происходит на линии foreach (var c in contacts).InvalidOperationException с использованием Datacontext

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

Что такое '*' * ех? – devuxer

+0

Это точное сообщение об ошибке, которое вы получаете, или нет? – Matt

+0

* ex * - это то, что я добавил, это – Paul

ответ

0

Я подозреваю, что c.parentcustomerid является идентификатором связанного объекта. У него нет свойства, называемого именем, к которому вы пытаетесь получить доступ.

Вы хотите получить доступ к фактическому объекту Customer, на который указывает «parentcustomerid», если вы хотите получить имя родительского клиента.

Если то, что вы хотите, идентификатор учетной записи (угадывание из свойства учетного), то просто изменить

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

для

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

parentcustomerid не кажется, проблема. Когда я подставляю c.address1_city для него (что-то, что я знаю, работал в прошлом для datacontext), я получаю ту же ошибку. – Paul

+0

Можете ли вы опубликовать фактическую схему вашего db и/или вашего картографического кода? как упоминал Реза, исключение происходит в foreach, потому что запрос не выполняется до тех пор, пока вы не перейдете к нему ... фактическая проблема в вашем запросе (так что, возможно, сопоставление из ваших классов C# в db неверно) – Jaime

0

Это исключение произошло на выполнении запроса, когда итерацию на контактах контекст попробуйте выполнить запрос из sql. Я думаю, что эта ошибка произошла из-за того, что ваша контекстная модель неправильно отображена в вашей базе данных, может быть другое имя или свойство таблицы.

+0

I думаю, что вы правы ... это просто странно, потому что я использую одну и ту же строку соединения (DataContext ctx = new DataContext («CrmConnection»);), которая использовалась в коде для другой функции, и эта работал.. – Paul

0
where c != null 

Вопрос. В каком поле вы проверяете значение null c.parentcustomerid !=null? Вы не можете выполнить нулевую проверку объекта.

Кроме того, имя свойства от Id будет работать с использованием LINQ-запросов к Crm

Смежные вопросы