Вы можете проверить, существует ли сущность. Примерно так:
book exists= context.Set<T>().Any(x=>x.Id==entity.Id);
Используйте вот так.
if(exists)
context.Set<T>().Add(entity);
else
context.Set<T>().Update(entity);
Изменить: поскольку это общий c метод, вы должны создать ограничение на метод, чтобы это работало. Например, абстрактный класс.
public abstract class BaseEntity
{
public int Id {get; set; }
}
Тогда ваш метод должен иметь это ограничение.
public virtual void AddOrUpdate(T entity)
where T: BaseEntity{}
Ваша сущность должна наследовать от BaseEntity
.