Tôi có EF Code First CTP4 làm việc tốt, và tôi đã cài đặt CTP5 hôm nay. Bây giờ, tôi nhận được một ngoại lệ khi cơ sở dữ liệu của tôi được repopulated.Mã EF4 Đầu tiên CTP5: Phương pháp hạt giống không còn hoạt động
Đây là mô hình của tôi:
public class Member
{
public Member()
{
DateCreated = DateTime.Now;
DateUpdated = DateTime.Now;
DateLastLogin = DateTime.Now;
}
[Key, DatabaseGenerated(DatabaseGenerationOption.Identity)] \\I have tried removing these annotations and the result is the same
public int MemberId { get; set; }
[Required,RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please enter a valid email address")]
public string Email { get; set; }
[Required,StringLength(20,MinimumLength=2)]
public string FirstName { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string LastName { get; set; }
[Required, StringLength(36, MinimumLength = 2)]
public string City { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string State { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string Zip { get; set; }
public double GeoLat { get; set; }
public double GeoLong { get; set; }
public string AccountStatus { get; set; }
public DateTime DateCreated { get; private set; }
public DateTime DateUpdated { get; set; }
public DateTime DateLastLogin { get; set; }
public virtual PublicProfile Profile { get; set; }
}
Đây là mã đang được gọi là trong Global.asax.cs
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DbDatabase.DefaultConnectionFactory = new SqlConnectionFactory("System.Data.SqlClient");
DbDatabase.SetInitializer<MeetPplDB>(new Initializer());
}
public class Initializer : DropCreateDatabaseAlways<MeetPplDB>
{
protected override void Seed(MeetPplDB context)
{
var Members = new List<Member>
{
new Member {
Email = "[email protected]",
City = "San Francisco",
AccountStatus = "Active",
State = "CA",
FirstName = "David",
LastName = "Daverson",
Zip = "94118",
GeoLat = 37.735,
GeoLong = -122.392 },
new Member {
Email = "[email protected]",
City = "Oakland",
AccountStatus = "Active",
State = "CA",
FirstName = "Bob",
LastName = "Boberson",
Zip = "94601",
GeoLat = 37.781,
GeoLong = -122.216 },
new Member {
Email = "[email protected]",
City = "San Francisco",
AccountStatus = "Active",
State = "CA",
FirstName = "Jenny",
LastName = "Jennerson",
Zip = "94123",
GeoLat = 37.735,
GeoLong = -122.392 }
};
Members.ForEach(m => context.Members.Add(m));
context.SaveChanges();
}
}
Khi nó chạm vào SaveChanges vào bối cảnh, tôi nhận được ngoại lệ này :
Đã phát hiện các thay đổi xung đột. Điều này có thể xảy ra khi cố gắng chèn nhiều thực thể với cùng một khóa.
Mô tả: Một ngoại lệ không được xử lý xảy ra trong khi thực hiện yêu cầu web hiện tại. Vui lòng xem lại dấu vết ngăn xếp để biết thêm thông tin về lỗi và vị trí bắt nguồn từ mã.
Chi tiết ngoại lệ: System.Data.UpdateException: Đã phát hiện các thay đổi xung đột. Điều này có thể xảy ra khi cố gắng chèn nhiều thực thể với cùng một khóa.
Có ai có ý tưởng gì đã thay đổi và lý do điều này không hoạt động nữa? Những gì cần phải thay đổi để làm việc này?
Tôi không thể nhìn thấy bất cứ điều gì sai trái với mã của bạn hoặc tái tạo vấn đề. Xin lỗi, chúc may mắn. – Paul
Tôi đang theo dõi [loạt bài này] (http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction- và-model.aspx) trên CTP5, và trình khởi tạo của tôi không có bất kỳ lệnh gọi 'SaveChanges' nào, nhưng vẫn điền chính xác cơ sở dữ liệu. Có lẽ một cái gì đó giữa CTP4 và CTP5 thay đổi liên quan đến nơi thay đổi được lưu cho một initializer? – ProfK