IDENTITY_INSERT durante a propagação com o EntityFramework 6 Code-First

Eu tenho uma entidade que tem umAuto-identity (int) coluna. Como parte da semente de dados, desejo usar valores de identificador específicos para os "dados padrão" no meu sistema; depois disso, quero ter o banco de dados para classificar o valor da identificação.

Até agora eu tenho sido capaz de definir oIDENTITY_INSERT para On como parte do lote de inserção, mas o Entity Framework não gera uma instrução de inserção que inclua oId. Isso faz sentido, pois o modelo pensa que o banco de dados deve fornecer o valor, mas, neste caso, quero fornecer o valor.

Modelo (pseudo-código):

public class ReferenceThing
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id{get;set;}
    public string Name{get;set;}
}

public class Seeder
{
    public void Seed (DbContext context)
    {

        var myThing = new ReferenceThing
        {
            Id = 1,
            Name = "Thing with Id 1"
        };

        context.Set<ReferenceThing>.Add(myThing);

        context.Database.Connection.Open();
        context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT ReferenceThing ON")

        context.SaveChanges();  // <-- generates SQL INSERT statement
                                //     but without Id column value

        context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT ReferenceThing OFF")
    }
}

Alguém capaz de oferecer algum insight ou sugestão?

questionAnswers(8)

yourAnswerToTheQuestion