2011-11-01 26 views
0

これでデータベースを構築しました。エンティティへのLinq - 参照EntityKey

のVisual Studio 2008 SP1のADO.NET Entity Frameworkのは、このようにエンティティモデルを生成しました: http://img835.imageshack.us/img835/1810/carease15test1ef.png

私は次のようにメソッドを作成しました:

private void buttonAddPatient_Click(object sender, EventArgs e) 
    { 
     using (carease15test1Entities context = new carease15test1Entities()) 
     { 
      long bnumber = Convert.ToInt32(textBoxToBed.Text); 
      long rnumber = Convert.ToInt32(textBoxOfRoom.Text); 

      long bid = (from b in context.bed 
         where b.bnumber == bnumber 
         select b.bid).First(); 

      long rid = (from r in context.room 
         where r.rnumber == rnumber 
         select r.rid).First(); 

      // Create a new bed, and input its details. 
      patient p = new patient(); 
      p.pname = textBoxPatient.Text; 
      p.Bed_bid = bid; 
      p.bedReference.EntityKey = new EntityKey("carease15test1Entities.bed", "bid", bid); 
      p.Bed_Room_rid = rid; 
      p.bed.roomReference.EntityKey = new EntityKey("carease15test1Entities.room", "rid", rid); 

      context.AddTopatient(p); 
      try 
      { 
       context.SaveChanges(); 
      } 
      catch (OptimisticConcurrencyException ex) 
      { 
       // Resolve the concurrency conflict by refreshing the // object context before re-saving changes. 
       context.Refresh(System.Data.Objects.RefreshMode.ClientWins, p); 
       // Save changes. 
       context.SaveChanges(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 

すべてが

以外完璧に動作します

p.bed.roomReference.EntityKey = new EntityKey( "carease15test1Entities.room"、 "rid"、rid);

それは言ってNullRefenceExceptionが判明「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」

をここに私のプロジェクトファイルです。

http://www.mediafire.com/?w3rjjbxbxw6wacv

誰も私にいくつかの助けを与えることができますか?

ありがとうございました。

+0

[.NETのNullReferenceExceptionは何ですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)の重複が可能です。 –

答えて

0

p.bedの内容がロードされるように、あなたは

p.bedReference.Load() 

を行う必要があります。

P.S. .NET 4.0にアップグレードできる場合、自動的に実行されます。

関連する問題