Đối với tôi nó không có vẻ như những câu trả lời khác là đủ.
Bạn có thể tắt initializer EF:
public ApplicationContext : DbContext
{
public ApplicationContext()
: base("ConnectionStringName")
{
Database.SetInitializer<ApplicationContext>(null);
}
// DbSets here
public DbSet<Part> Parts {get; set;}
// override OnModelCreating below ...
}
Và sau đó sử dụng thạo API chú thích/dữ liệu tuy nhiên bạn thường để thiết lập POCOs của bạn/mô hình để phù hợp với DB hiện có.
chi tiết tại blog này: http://cpratt.co/entity-framework-code-first-with-existing-database/
Trong trường hợp đó URL không hoạt động trong tương lai - đây là những gì tôi muốn nói:
Sau khi thiết lập các Initializer tắt ở trên, cấu hình của poco của bạn tương ứng với một bảng:
public class Part
{
public string PartID {get; set;}
public string Description {get; set;}
public decimal Weightlbs {get; set;}
public decimal Price {get; set;}
}
Sau đó, bản đồ POCO của bạn vào bảng DB hiện bằng cách ghi đè phương pháp này trong lớp Application Context
của bạn:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Code First will assume a lot, but if you need to override things:
modelBuilder.Entity<Part>().ToTable("db_PartTable");
modelBuilder.Entity<Part>().Property(p => p.PartID)
.HasColumnName("Part_ID");
modelBuilder.Entity<Part>().Property(p => p.Description)
.HasMaxLength(100)
}
Một blog tốt cho điều này, bởi Scott Guthrie: http://weblogs.asp.net/scottgu/using-ef-code-first-with-an-existing-database
Nếu bạn thay đổi lớp học của bạn để phản ánh những thay đổi trong cơ sở dữ liệu bạn không cần phải di cư. – NunoCarmo
@NunoCarmo - Cảm ơn phản hồi của bạn.Vì vậy, bạn có nói rằng nếu những thay đổi là chính xác 100% thì nó sẽ không phàn nàn về mô hình thay đổi? Điều gì xảy ra nếu có một số khác biệt nhỏ, có cách nào để xem thông báo lỗi hay EF chỉ báo cáo rằng mô hình không còn đồng bộ hóa nữa? –