How to create foreign key relationships with Entity Framework?

I want to create a new row in my database in a table that has a couple of relationships with a foreign key, and I could not get information about what order and what calls should be made. This is what I have so far:

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();

The code does not work on the second line, saying:

Attaching is not a valid operation when the associated source object associated with it is in an added, deleted, or separate state. Objects loaded using the NoTracking merge option - always disconnected.

Any ideas?

+5
source share
3 answers

(Thanks to John for grammar corrections)

, . , :

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();

, .

+8

? SELECT.

CustomerReference EntityKey.

order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>();
order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);
+6

For the update, here is an example code:

using (var ctx = new DataModelEntities())
{

       var result = (from p in ctx.UserRole.Where(o => o.UserRoleId == userRole.UserRoleId)
                              select p).First();

       result.RolesReference.EntityKey = new EntityKey("DataModelEntities.Roles",
                                       "RoleId", userRole.RoleId);

       result.UserRoleDescription = userRole.UserRoleDescription;      
       ctx.SaveChanges();
}
0
source

All Articles