2016-05-20 6 views
0

これは私の最初の投稿です。私はC#/ OOとLinqPADも新しくなっています。 (翻訳先:「学習モード」になっているためにコンセプトや用語が誤って使用される可能性があります)LinqPad Entity FrameworkとNullExceptionReference

次のクエリにバグを絞り込んだアプリケーションがあります。制約のある環境で問題を解決するためにLinqPADを試してみることにしました。

私たちのデータベースとのやり取りには、Entity Frameworkを使用しています。私はLinqPADの"C#プログラム"の選択を使用しています。

LinqPADでエンティティを使用する方法に関する素晴らしいチュートリアルが見つかりましたが、これはうまくいくようです。 (証明:エンティティが正常に接続されていなかった場合と同様に、「aEntities」はエラーを返しません)

問題に至りましょう。

「var」で「NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません」と表示されます。

私がここで尋ねる理由は、この「var」アプローチを使用しているすべての単一の例です。何らかの理由で動作しません。私は 'qryDC'を宣言しようとしました、新しいインスタンスを作成し、それを割り当てる。 (私はここで弱い知識を感じていますが、読んで学びます。)

私はこのトピックについてJohn Saunders epicを読んでいます。 (ワウマン!ありがとう!) What is a NullReferenceException, and how do I fix it?

しかし、私の問題(学習曲線)に対処するためにその知識を翻訳することができませんでした。ここで

はコードです:

void Main(AEntities aEntities) 
{ 

    decimal fmProjectUID = 1123; 

    var qryDC = 
     from pnp in aEntities.PNonPRs 
      from p in aEntities.Projects 
      from pt in aEntities.PurchaseTypes 
      from wbs in aEntities.P32 
      from pc in aEntities.PPhases 
      where pnp.ProjectUID == p.ProjectUID 
      where p.ProjectUID == fmProjectUID 
      where pnp.PurchaseTypeUID == pt.PurchaseTypeUID 
      where pnp.P32UID == wbs.P32UID 
      where pt.IsNonPR == 1 
      orderby pt.PurchaseTypeID 
      select new 
      { 
       PNonPrUID = pnp.PNonPrUID 
       ,PurchaseTypeID = pt.PurchaseTypeID 
       ,PhaseCode = pnp.ProjectPhase.PhaseCode 
       ,DANbr = pnp.AType.DANbr 
       ,PreAmt = pnp.PreAmt 
       ,POStDate = pnp.POStDate 
       ,POFDate = pnp.POFDate 
       ,BaseAmt = pnp.BaseAmt 
       ,Notes = pnp.Notes 
     ,ChangedByName = pnp.ChangedByName 
      }; 

} 

は、あなたがより多くの情報が必要なら、私に教えてください。

あなたの時間、努力および考えに感謝します。

答えて

4

Mainメソッドに引数を任意に割り当てることはできませんし、それらを埋め込むことを期待しています。aEntities変数は、実行時にnullです。つまり、null参照例外です。コンテキストをインスタンス化する必要があります。あなたはLINQPadであなたの接続を定義した後、選択された場合

void Main() 
{ 
    decimal fmProjectUID = 1123; 

    var aEntities = new AEntities(); 
    var qryDC = from pnp in aEntities.PNonPRs 
       from p in aEntities.Projects 
       from pt in aEntities.PurchaseTypes 
       // etc... 
} 

また、クエリの接続はあなたがAEntitiesの作成を省略し、単に以下のように使用することができると述べました。

void Main() 
{ 
    decimal fmProjectUID = 1123; 

    var qryDC = from pnp in PNonPRs 
       from p in Projects 
       from pt in PurchaseTypes 
       // etc... 
} 

また、Visual StudioとLINQPadでデバッガを理解することをお勧めします。ブレークポイントを設定して、aEntitiesがnullであったと見なした変数を調べていましたか?

+0

フォローアップしていただきありがとうございます。私はLinqPADをアプリケーション用のDLLにポイントして、接続文字列を使用できるようにしました。 "aEntities"を削除することで問題が解決されました。私はどこから来ているのかを指摘してくれてありがとう。続いて、私はデバッガを学んでいました。あなたがそれを知るようになると、この問題ではうまくいきませんでした。 LinqPADのライセンスを取得したコピーの代金を支払う必要がありますが、私はそこでデバッグすることができます。ありがとうございました。 –

関連する問題