Now that I have built a database.
Visual Studio 2008 SP1’s ADO.NET Entity Framework has generated an Entity Model like this: http://img835.imageshack.us/img835/1810/carease15test1ef.png
I have created a method as follow:
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);
}
}
}
Everything works perfectly except for
p.bed.roomReference.EntityKey = new EntityKey("carease15test1Entities.room", "rid", rid);
It turns out a NullRefenceException saying “Object reference not set to an instance of an object.”
Here is my project files.
http://www.mediafire.com/?w3rjjbxbxw6wacv
Could anyone give me some help?
Thank you so much.
You should do
p.bedReference.Load()
So that contents of p.bed are loaded.
P.S. If you can upgrade to .NET 4.0 it will be done automatically for you.