Search code examples
c#linqentity-frameworklinq-to-entitiessql-merge

MERGE in Entity Framework


Is there a way to call T-Sql's MERGE command from .NET Entity framework 4?


Solution

  • No there no such built-in functionality - you must build your own. Very common is for example approach like:

    public void SaveOrUpdate(MyEntity entity)
    {
        if (entity.Id == 0)
        {
            context.MyEntities.AddObject(entity);
        }
        else
        {
            context.MyEntities.Attach(entity);
            context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
        }
    
        // You can call SaveChanges here or you can call it separately after multiple changes
    }
    

    This is example for working with detached entity which have Id auto generated in the database (IDENTITY). Default Id for new entity is always 0 because the real value will be assigned during saving changes.