I’m building ASP.NET MVC2 application, and using Entity Framework as ORM. I am having troubles updating object in the database. Every time I try entity.SaveChanges(), EF inserts new line in the table, regardless of do I want update, or insert to be done. I tried attaching (like in this next example) object to entity, but then I got
{"An object with a null EntityKey value cannot be attached to an object context."}
Here’s my simple function for inserts and updates (it’s not really about vehicles, but it’s simpler to explain like this, although I don’t think that this effects answers at all)…
public static void InsertOrUpdateCar(this Vehicles entity, Cars car)
{
if (car.Id == 0 || car.Id == null)
{
entity.Cars.AddObject(car);
}
else
{
entity.Attach(car);
}
entitet.SaveChanges();
}
I even tried using AttachTo(“Cars”, car), but I got the same exception.
Anyone has experience with this?
If you are updating an existing record then you should have the EntityKey within the object instance you are providing to your InsertOrUpdate method. Go back to your code and see if you can locate where this is getting lost. I’d suspect you are presenting the user with a form to update this object and then mapping the response fields back into a Car object but you aren’t passing the EntityKey with it (you probably don’t want to display it to the user).
What you’d need to do is to include the Key in the form using an input type of ‘hidden’. You can use the Html helper Html.Hidden(“Key field name”, key field value) to ensure it’s passed to the user form and then back to your Post code.