Base de datos SQL de Windows Azure: la columna de incremento automático de identidad omite valores

Actualmente, estoy trabajando en una aplicación ASP.Net MVC 4 utilizando Entity Framework 5. Usé CodeFirst para la fase de desarrollo inicial. Pero ahora han deshabilitado las Migraciones automáticas y el diseño de nuevas tablas directamente utilizando SSMS y escribiendo POCO. Todo funciona bien.

Recientemente, se identificó un problema extraño en la producción. Los registros en una de las tablas inicialmente diseñadas omitieron el valor de identidad de incremento automático en más de 900 números. Esto ha sucedido 3 veces en los últimos 3 meses. Depuró la aplicación localmente pero no se pudo reproducir. No hay ningún patrón o tendencia observada.

Modelo:

public class Enquiry
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public Int64 EnquiryId { get; set; }

    [Required]
    public int UserId { get; set; }

    [Required]
    public byte Bid { get; set; }

    ...

    [Required]
    public DateTime Created { get; set; }

    [Required]
    public DateTime Modified { get; set; }
}

public class EnquiryDetail
{
    [Key]
    public Int64 EnquiryId { get; set; }

    [Required]
    public int CreditScore { get; set; }

    [Required]
    public byte BidMode { get; set; }

    public virtual Enquiry Enquiry { get; set; }
}

DBContext:

public class EscrowDb : DbContext
{

    public EscrowDb()
        : base("name=DefaultConnection")
    {

    }
    public DbSet<Enquiry> Enquiries { get; set; }
    public DbSet<EnquiryDetail> EnquiryDetails { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Entity<EnquiryDetail>()
            .HasRequired<Enquiry>(ed => ed.Enquiry)
            .WithRequiredDependent(e => e.EnquiryDetail);
    }
}

Controlador:

[Authorize]
public class EnquiryController : Controller
{
    private EscrowDb _db = new EscrowDb();

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(EnquiryViewModel core)
    {
       var enquiry = new Enquiry();
       // Some code to set properties using passed ViewModel
       ...

       var enquiryDetail = new EnquiryDetail();
       // Some code to set properties using passed ViewModel
       ...

       enquiry.EnquiryDetail = enquiryDetail;

       _db.Enquiries.Add(enquiry);
       _db.SaveChanges();
    }
}

Todo este código ha estado funcionando bien hasta ahora, excepto el valor de identidad que se omite esporádicamente por grandes huecos de casi 1000 números.

¿Alguien ha encontrado este tipo de problema? Por favor comparte tus pensamientos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta