var result = db.ExecuteCommand ("вставить в список контактов select * from contacts_temp, где SessionKey = {0}", contact.Profile.SessionId);
Конечно, это не в моей голове, но вы поняли. Еще лучше было бы поместить перенос и удаление в хранимую процедуру. Метод, который вы используете, дважды обойдёт все записи contact_temp (один раз туда-сюда для вставки, один раз для удаления).
P.S. Google "сначала запишите хранимые процедуры" для способа вызова хранимых процедур с помощью EF 4.1