You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 9, 2021. It is now read-only.
When you load entity, commit the unit of work, after the change attempt on such entity there is no way to attach(reattach) it to context and submit changes to database. I have problem when I was using IEntityWithKey but I suppose that similar problem can happens for POCO type of entities.
Problem could be resolved by adding:
public void Attach(T entity) where T : class
{
//If the entity implementes the IEntityWithKey interface then we should use Context's Attach metho
//instead of the set's Attach. Getting an exception
//"Mapping and metadata information could not be found for EntityType 'System.Data.Objects.DataClasses.IEntityWithKey"
//when using set's Attach.
var entityWithKey = typeof (IEntityWithKey);
if (entityWithKey.IsAssignableFrom(entity.GetType()))
{
_context.Attach((IEntityWithKey)entity);
// new line seem to solve the problem
_context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
return;
}
GetObjectSet<T>().Attach(entity);
//_context.DetectChanges(); //Required for POCO entities
}
When you load entity, commit the unit of work, after the change attempt on such entity there is no way to attach(reattach) it to context and submit changes to database. I have problem when I was using IEntityWithKey but I suppose that similar problem can happens for POCO type of entities.
Problem could be resolved by adding:
public void Attach(T entity) where T : class
{
//If the entity implementes the IEntityWithKey interface then we should use Context's Attach metho
//instead of the set's Attach. Getting an exception
//"Mapping and metadata information could not be found for EntityType 'System.Data.Objects.DataClasses.IEntityWithKey"
//when using set's Attach.
var entityWithKey = typeof (IEntityWithKey);
if (entityWithKey.IsAssignableFrom(entity.GetType()))
{
_context.Attach((IEntityWithKey)entity);
// new line seem to solve the problem
_context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
return;
}