EF entity.attach does not work

I have an entity retrieved from db as follows

using ( var ctx = new Mycontext() )
   return ctx.MyGroups.First( // query );

this is bound to UI and updated on user save action as follows

using ( var ctx = new Mycontext() )
{
    ctx.MyGroups.Attach(o); // verified object o is updated 
    ctx.SaveChanges();

}

However the db is NOT updated

Environment is .net 4.0, db is sql compact 4

Any help on what could be missing/wrong ?

Answers


When you attach objects to the context, their default state is Unchanged, you should force the update by setting DBContext.Entry(entity).State = EntityState.Modified; And only after that call DBContext.SaveChanges();


Attach method relies on primary key to attach the entity to object context. What seems to me is that when your object is changed from the view and model bound your primary key value is missing in the updated object.


As suggested by Ciobanu Ion, here is your solution:

using ( var ctx = new Mycontext() ) 
{ 
    ctx.MyGroups.Attach(o); // verified object o is updated  
    ctx.ObjectStateManager.ChangeObjectState(o, EntityState.Modified);
    ctx.SaveChanges(); 

} 

Need Your Help

Aliasing db4o between C# and F#

c# f# db4o

I have created a db4o database in a C# solution called SyncManage2. That is the assembly name, and also the namespace. There is a class in there called DicEntry.

Get ID3 tag from MP3 Streaming

javascript php mp3 id3 webradio

I encounter difficulties in recovering informations (ID3 tag) from an MP3 stream. I want this informations for display the albumArt and the title of the current song on the homepage of the radiomed's