Cách tốt nhất để thực thi tất cả các chuyển đổi db bắt buộc khi bắt đầu ứng dụng với EF 4.3 là gì?Khuôn khổ thực thể 4.3 di chuyển chạy lúc bắt đầu ứng dụng
Trả lời
Cách tốt nhất nên sử dụng trình khởi chạy MigrateDatabaseToLatestVersion
mới.
Database.SetInitializer<YourContext>(
new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfig>());
Database.Initialize(false);
Mã này dự định được đặt ở đâu? Người ta không thể sử dụng Database.Initialize trong App_Start vì nó không thể được sử dụng trong một bối cảnh tĩnh. –
@ MaximV.Pavlov: Hãy thử thêm nó vào hàm tạo tĩnh trong ngữ cảnh của bạn. –
@LadislavMrnka: mục đích của 'Database.Initialize (false);' là gì? Từ thử nghiệm của tôi với 'MigrateDatabaseToLatestVersion', cơ sở dữ liệu được tạo, gieo và cập nhật lên phiên bản mới nhất mà không có lệnh Initialize thứ hai. (trong EF5 ...) – demoncodemonkey
Một mô tả tuyệt vời về tùy chọn cấu hình EF 4.3 có thể tìm thấy tại EF 4.3 Configuration File Settings trên blog của nhóm ADO.NET. Phần cuối cùng mô tả Khởi tạo cơ sở dữ liệu, bao gồm bộ khởi tạo mã đầu tiên MigrateDatabaseToLatestVersion
mới.
Mặc dù Entity Framework — giống như nhiều tính năng khác của .NET 4.x — ưu tiên cấu hình, đây là một trường hợp rất hữu ích để đặt bộ khởi tạo cơ sở dữ liệu MigrateDatabaseToLatestVersion
thông qua tệp cấu hình của ứng dụng chứ không phải mã rõ ràng nó vào ứng dụng của bạn.
Khi sử dụng cấu hình, cũng lưu ý nhận xét của tôi về bài đăng đó, để làm cho cấu hình dễ đọc hơn nhiều. – Rudi
Tôi cần làm điều đó một cách rõ ràng, vì tôi sử dụng ngữ cảnh uber để di chuyển, một phần lớn các di chuyển khác. Các bit chính là:
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(
new Lcmp.EF.Migrations.Migrations.Configuration());
dbMigrator.Update();
Với một sprinkling của Elmah đăng nhập, tôi thực sự sử dụng này, được gọi là từ Application_Start(). Các mảnh của nó bị đánh cắp từ ý tưởng của người khác. Tôi không tích cực là phần khóa an toàn chỉ là cần thiết.
public static int IsMigrating = 0;
private static void UpdateDatabase()
{
try
{
if (0 == System.Threading.Interlocked.Exchange(ref IsMigrating, 1))
{
try
{
// Automatically migrate database to catch up.
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Checking db for pending migrations.")));
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(new Lcmp.EF.Migrations.Migrations.Configuration());
var pendingMigrations = string.Join(", ", dbMigrator.GetPendingMigrations().ToArray());
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The database needs these code updates: " + pendingMigrations)));
dbMigrator.Update();
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("Done upgrading database.")));
}
finally
{
System.Threading.Interlocked.Exchange(ref IsMigrating, 0);
}
}
}
catch (System.Data.Entity.Migrations.Infrastructure.AutomaticDataLossException ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
catch (Exception ex)
{
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
}
}
- 1. Khuôn khổ thực thể 4.3 - Lỗi lập bản đồ và di chuyển TPH
- 2. Tạo kho lưu trữ sử dụng mã khuôn khổ thực thể Đầu tiên 4.3
- 3. Khuôn khổ thực thể 4.3 Mã đầu tiên không thể tạo datetime2?
- 4. Mã khuôn khổ thực thể Đầu tiên không có app.config
- 5. Sử dụng mã khuôn khổ thực thể Di cư đầu tiên trong dự án DVCS
- 6. Mã khuôn khổ thực thể Đầu tiên ReadOnly Thực thể
- 7. Kích thước bể bơi tối đa gặp phải với khuôn khổ thực thể 4.3
- 8. Khuôn khổ thực thể PostgreSQL
- 9. Khuôn khổ thực thể UnintentionalCodeFirstException
- 10. Khuôn khổ thực thể 4.3. Tên cột không hợp lệ 'CreatedOn'
- 11. Khuôn khổ thực thể Nhấn 2100 Tham số giới hạn
- 12. Khuôn khổ thực thể 4 - Thừa kế
- 13. Mã khuôn khổ thực thể đầu tiên tạo cột không thể rỗng
- 14. Khuôn khổ thực thể trên xóa tầng
- 15. Làm thế nào để triển khai sản xuất với mã khuôn khổ thực thể đầu tiên
- 16. Cấu trúc thực thể 4.3 Di chuyển di chuyển dữ liệu hiện có
- 17. Khuôn khổ thực thể DbContext trong vai trò Web Azure
- 18. Khuôn khổ thực thể có quá tải đối với các ứng dụng web không?
- 19. Khuôn khổ thực thể có mã MVC
- 20. thực thể khuôn khổ: điều kiện lọc
- 21. Khuôn khổ thực thể và đa luồng
- 22. Khuôn khổ thực thể CTP5, mã đầu tiên. Tùy chọn chuyển hướng bất động sản
- 23. Xác thực MVC3 với Khuôn khổ thực thể Mô hình/Cơ sở dữ liệu Đầu tiên
- 24. Khuôn khổ thực thể 4.1 Cột ma
- 25. Khuôn khổ thực thể có nhiều edmx
- 26. Khuôn khổ thực thể và MongoDb
- 27. Khuôn khổ thực thể - Chọn riêng trong
- 28. Thực thể lạ cập nhật trong Khuôn khổ thực thể Mã-Đầu tiên
- 29. Ứng dụng mẫu Khuôn khổ tốt?
- 30. Khuôn khổ thực thể và kết nối tổng hợp
Bạn có nghĩa là chạy từ mã? Sau đó, đây là liên kết bạn có thể xem http://romiller.com/2012/02/09/running-scripting-migrations-from-code/ –