Entity framework 6 foreign key is not being updated on attach and save

c# entity-framework-6 foreign-key-relationship sql-server sql-update

Question

I have a issue with entity framework 6 not updating the foreign key when I try to update a entity object. It works on insert (but then I have to set the state to Unchanged for not to reinsert a new entity in the foreign key table). I am using code first approach and generated the models myself. It's a web application so the entity objects gets detached, so I have to reattach them.

I've created a simplified example so it's easy to explain what my problem is. In this example I have a car object which has a one to many relation to make. I want to update a car and change what make it is and its name. The name is updated but not the foreign key value. How do I go ahead to get the foreign key to be updated too?

The code handeling the attaching

public void UpdateCars(Car car){
    var dbContext = new CarsDbContext(); //Inherits DbContext
    dbContext.Cars.Attach(car);
    dbContext.Entry(car).State = EntityState.Modified;
    dbContext.SaveChanges();
}

The car Entity

[Table("Car")]
public class Car
{
    public Guid Id { get; set; }

    public String Name { get; set; }

    public virtual Make Make { get; set; }
}

[Table("Make")]
public class Make
{
    public Guid Id { get; set; }

    public String Name { get; set; }
}

Edit:

I did a few more changes with help from comments (thanks guys!) and I made something work but it feels like I'm doing it the wrong way because the code is far from pretty. Here's what I did:

Modified the Car object to:

    public String Name { get; set; }

    public Guid Make_Id

    [ForeignKey("Make_Id")]
    public virtual Make Make { get; set; }

In my update

    var dbContext = new CarsDbContext(); //Inherits DbContext
    car.Make_Id = car.Make.Id;
    dbContext.Cars.Attach(car);

There surely must be a better practice around this when doing EF code first when working with detached entities?

1
0
9/8/2014 1:16:38 PM

Accepted Answer

I ended up using graphdiff which solved all my problems. Also when my entities became more complex and it tried to attachs same entity several times. Here's a article to read about it: http://blog.brentmckendrick.com/introducing-graphdiff-for-entity-framework-code-first-allowing-automated-updates-of-a-graph-of-detached-entities/

0
9/10/2014 7:57:00 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow