2012-02-16 14 views
1

これを実行すると、InvalidOperationExceptionが発生します(「属性名を特定できません」と表示されます)。私はネットをチェックしましたが、解決策が見つかりませんでした。これは、foreach(連絡先のvar c)行で発生します。Datacontextを使用したInvalidOperationException

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

'* ex *'とは何ですか? – devuxer

+0

これは正確なエラーメッセージですか、それともそれ以上はありますか? – Matt

+0

* ex *は私が追加したものです。 – Paul

答えて

0

私はc.parentcustomeridが関連オブジェクトのIDだと思っています。アクセスしようとしている名前というプロパティはありません。

親顧客の名前を取得する場合は、「parentcustomerid」が指す実際のCustomerオブジェクトにアクセスする必要があります。

何が欲しいのアカウントIDである場合(ACCTプロパティから推測)そしてちょうど

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

parentcustomeridはしていません)による文字制限に切断されます問題と思われる。私はc.address1_city(これは私が過去にdatacontextのために働いていたことが分かっていたもの)の代わりに、同じエラーが出ます。 – Paul

+0

dbおよび/またはマッピングコードの実際のスキーマを投稿できますか? Rezaが指摘したように、例外はforeach内で発生します。これは、反復処理を行うまでクエリが実行されないためです。実際の問題はクエリにあります(おそらく、C#クラスからdbへのマッピングが正しくない) – Jaime

0

ため

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

を変更する連絡先の際に反復この例外は、クエリあなたの実行時に発生しましたコンテキストsqlからクエリを実行してみてください。私はあなたのコンテキストモデルがデータベースに正しくマップされていないためにこのエラーが発生したと思います。テーブル名やプロパティが異なるかもしれません。

+0

あなたが正しいかもしれないと思う...私は別の関数のコードで使用された同じ接続文字列( 'DataContext ctx = new DataContext(" CrmConnection ");')を使用しているので、働いた.. – Paul

0
where c != null 

です。どのフィールドでnullをチェックしていますかc.parentcustomerid !=null?エンティティに対してヌルチェックを行うことはできません。

また、nameプロパティoff IDは、LINQ to Crmを使用するルックアップで動作します

関連する問題