Hiện đang làm việc trên ứng dụng ASP.Net MVC 4 sử dụng Entity Framework 5. Được sử dụng CodeFirst cho giai đoạn phát triển ban đầu. Nhưng giờ đây đã tắt tính năng Tự động di chuyển và thiết kế các bảng mới trực tiếp bằng SSMS và viết POCO. Mọi thứ đều hoạt động tốt.Cơ sở dữ liệu SQL Azure Windows - Danh tính Tự động tăng cột bỏ qua giá trị
Gần đây, đã xác định sự cố kỳ lạ trong Sản xuất. Các bản ghi trong một trong các bảng được thiết kế ban đầu đã bỏ qua giá trị nhận dạng tự động gia tăng thêm hơn 900 số. Điều này đã xảy ra 3 lần trong vòng 3 tháng qua. Đã gỡ lỗi ứng dụng cục bộ nhưng không thể tái tạo. Không có bất kỳ mô hình hoặc xu hướng quan sát.
mẫu:
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);
}
}
Bộ điều khiển:
[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();
}
}
Tất cả các mã này đã làm việc f cho đến nay, ngoại trừ giá trị nhận dạng bị bỏ qua một cách không thường xuyên bởi những khoảng trống lớn gần 1000 số.
Có ai gặp phải vấn đề như vậy không? Hãy chia sẻ suy nghĩ của bạn.
Xem tại đây: https://connect.microsoft.com/SQLServer/feedback/details/739013/alwayson-failover -results-in-reseed-of-identity –
@Rosiek, tôi không thấy bất kỳ giải pháp sẵn sàng sử dụng tốt nào có tại có thể được áp dụng cho SQL Azure Web Edition trong MS Cloud. – Santosh
Tôi thấy cùng một vấn đề. Bất kỳ may mắn nào tìm ra điều này? –