Muy bajo rendimiento para la inserción por lotes con SQL Server CE 4.0 y Entity Framework 4.2

Estoy insertando muchos datos en SQL Server CE 4.0 usando Entity Framework 4.2 (código primero), y el rendimiento es abismal en comparación con la inserción directa de SQL.

El modelo es muy simple:

public class DocMember
{
    public DocMember() { this.Items = new List<DocItem>(); }

    public int Id { get; set; }

    public string Name { get; set; }
    public string MemberType { get; set; }
    public string AssemblyName { get; set; }

    public virtual IList<DocItem> Items { get; set; }
}

public class DocItem
{
    public int Id { get; set; }
    public DocMember Member { get; set; }
    public string PartType { get; set; }
    public string PartName { get; set; }
    public string Text { get; set; }
}

Tengo 2623DocMembers y un total de 7747DocItems para insertar, y obtengo los siguientes tiempos de ejecución:

With SQL: 00:00:02.8
With EF:  00:03:02.2

Puedo entender que hay un poco de sobrecarga con EF, pero es 65 veces más lento que SQL!

Quizás haya un problema en mi código, pero es bastante sencillo y no puedo ver qué podría estar mal:

    private TimeSpan ImportMembersEF(IList<DocMember> members)
    {
        using (var db = new DocEntities())
        {
            db.Database.CreateIfNotExists();

            var sw = Stopwatch.StartNew();
            foreach (var m in members)
            {
                db.Members.Add(m);
            }

            db.SaveChanges();
            sw.Stop();
            return sw.Elapsed;
        }
    }

También intenté llamar aSaveChanges para cada elemento insertado, o cada 100 o 200 elementos, en vano (en realidad lo empeora).

¿Hay alguna forma de mejorar el rendimiento o tengo que usar SQL para las inserciones por lotes?

EDITAR para completar, aquí está el código para la inserción de SQL:http: //pastebin.com/aeaC1Kc

Respuestas a la pregunta(4)

Su respuesta a la pregunta