I want to add a new entry to a table in my database that contains a few foreign key associations, but I'm not sure what calls should be performed in what sequence. I currently have the following:
db.Models.Order order = DB.Models.Order.CreateOrder( apple ); order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() ); db.SaveChanges();
On the second line, the code is failing with the message:
Attach is not a valid operation when the source object associated with this related end is in an added, deleted, or detached state. Objects loaded using the NoTracking merge option are always detached.
(We appreciate John fixing the grammar.)
I therefore came to a solution. What you need to do is as follows:
db.Models.Order order = DB.Models.Order.CreateOrder( apple ); order.Customer = (from c in db.Customer where c.Id == custId select c).First(); db.SaveChanges();
That should be helpful, I hope.
Why not make reference to entities? Your approach will result in an additional
Using the is a much better method than
combined with a
order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>(); order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);