Làm thế nào để di chuyển DB mà không có nuget? Nó không thể sử dụng Visual Studio với nuget trong môi trường sản xuất. Hiện nay, nhiều ví dụ chỉ dạy chúng ta sử dụng Visual Studio với nuget. Cách sử dụng các lớp DbMigration được tạo ra?Mã EF Đầu tiên DbMigration mà không cần nuget
Trả lời
Cách đơn giản nhất là:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyDbContext,
MyDbMigrationsConfiguration>());
này sẽ chạy di cư khi khởi tạo DbContext.
Bạn cũng có thể cưỡng chế thi hành bằng tay:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
(Tôi tin rằng bạn cũng phải thiết lập TargetDatabase
vào cấu hình, nhưng bạn có thể thử)
Bạn có thể thực hiện bằng EF Power Tools, có chương trình migrate.exe mà bạn có thể sử dụng để chạy di chuyển từ dấu nhắc lệnh (ví dụ như xây dựng bài đăng). Nếu bạn muốn chạy di trú trên cơ sở dữ liệu sản xuất, bạn cũng có thể sử dụng lệnh Update-Database để tạo các kịch bản lệnh SQL từ các lớp di trú, rất hữu ích nếu bạn cần phải trải qua một DBA.
Công cụ điện EF có sẵn trên Thư viện Visual Studio và tùy chọn here, hãy xem điều này rất hữu ích video rằng, trong số những thứ khác, nói về lệnh Update-Database.
Bạn có thể chuyển sang phiên bản mới nhất bằng cách sử dụng Cài đặt Web.config - xem this blog post by Rowan Miller:
Nếu bạn đang sử dụng Code First Migrations, bạn có thể định cấu hình cơ sở dữ liệu được di chuyển tự động bằng MigrateDatabaseToLatestVersion initializ er.
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext,
MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Chỉ cần trao đổi lớp ngữ cảnh của bạn ở đây: các System.Data.Entity.MigrateDatabaseToLatestVersion là built-in để EF. Cài đặt này cập nhật phiên bản AppSettings cũ của cùng một ý tưởng.
Để tâm trí của tôi là cách tốt nhất, vì câu hỏi khởi tạo để sử dụng là cấu hình thực sự, và bạn muốn có thể Web.config này, và áp dụng lý tưởng các biến đổi cấu hình để làm việc cho các môi trường khác nhau của bạn .
Dưới đây là các tùy chọn:
- Sử dụng công cụ dòng lệnh migrate.exe rằng tàu trong gói NuGet của chúng tôi.
- Sử dụng trình khởi chạy MigrateDatabaseToLatestVersion như những người khác đã mô tả.
- Sử dụng API thời gian chạy có sẵn từ lớp DbMigrator.
Tôi đang tìm cách kiểm soát việc di chuyển nào chạy rõ ràng trong mã mà không cần lớp DbConfiguration hoặc tự động di chuyển được bật.
Vì vậy, tôi cố gắng tạo ra tiện ích sau:
public static void RunMigration(this DbContext context, DbMigration migration)
{
var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
if (prop != null)
{
IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
var generator = new SqlServerMigrationSqlGenerator();
var statements = generator.Generate(operations, "2008");
foreach (MigrationStatement item in statements)
context.Database.ExecuteSqlCommand(item.Sql);
}
}
Như một ví dụ, có một sự chuyển đổi như sau:
public class CreateIndexOnContactCodeMigration : DbMigration
{
public override void Up()
{
this.CreateIndex("Contacts", "Code");
}
public override void Down()
{
base.Down();
this.DropIndex("Contacts", "Code");
}
}
Bạn có thể chạy nó bằng cách sử DbContext của bạn:
using (var dbCrm = new CrmDbContext(connectionString))
{
var migration = new CreateIndexOnContactCodeMigration();
migration.Up();
dbCrm.RunMigration(migration);
}
có một giải pháp khác:
Using DB = New SHAContext()
If DB.Database.Exists() Then
Dim migrator As New DbMigrator(New SHAClassLibrary.Migrations.Configuration())
For Each m In migrator.GetDatabaseMigrations()
Try
migrator.Update(m)
Catch ex As Exception
End Try
Next
End If
'DB.test()
End Using
- 1. Bật tính năng xóa tầng trong Mã EF Đầu tiên mà không để lộ khóa ngoài
- 2. Mã EF Đầu tiên 4.3 Vòng đời DbContext?
- 3. Lọc thuộc tính điều hướng trong Mã EF Đầu tiên
- 4. Mã EF Lần đầu tiên háo hức tải
- 5. Sử dụng mã EF Đầu tiên và SqlCe trong WPF
- 6. Cách cấu hình ProviderManifestToken cho Mã EF Đầu tiên
- 7. Thử nghiệm đơn vị với mã EF Đầu tiên DataContext
- 8. Tạo trường loại tiền bằng mã EF đầu tiên CTP5
- 9. Mã EF Bộ sưu tập tùy chỉnh đầu tiên
- 10. Loại dữ liệu XML trong EF 4.1 Mã Đầu tiên
- 11. Tên mã không hợp lệ đầu tiên của EF Mã "Danh mụcCategoryID"
- 12. Tại sao EF DataBase đầu tiên không sử dụng getdate()?
- 13. EF mã đầu tiên: dbcontext kế thừa tạo ra hai cơ sở dữ liệu
- 14. Cách mã Refactor/DB lược đồ với mã EF 4 đầu tiên - Di chuyển dữ liệu
- 15. Mã EF Đầu tiên. Bộ sưu tập trẻ em là không cho phụ huynh
- 16. Chiến lược khởi tạo tùy chỉnh cho mã EF Đầu tiên không thả bảng để thêm cột
- 17. Mã EF Đầu tiên: tốt để gọi DetectChanges ngay trước SaveChanges?
- 18. EF 4.1 Mã Đầu tiên chính nước ngoài cho biết thêm thêm cột
- 19. Entity Framework Mã lập bản đồ đầu tiên mà không nước ngoài chủ chốt
- 20. Tạo cơ sở dữ liệu SQL CE từ mã EF-Lớp DbContext đầu tiên
- 21. NHibernate và mã đầu tiên
- 22. Lập bản đồ TPT trong mã EF Đầu tiên 4.1 w/Các khóa chính khác nhau
- 23. ADO EF Mã đầu tiên lớp trung gian kế thừa kế thừa
- 24. EF 4.1 Mã đầu tiên ModelBuilder HasForeignKey cho một mối quan hệ
- 25. Mã EF Đầu tiên: Các phương thức có thể dịch sang SQL
- 26. Mã EF Đầu tiên Nhiều thực thể vào cùng một bảng
- 27. Mã EF Đầu tiên: Tôi có thể tìm sự kiện SavingChanges ở đâu?
- 28. EF, Mã đầu tiên - Cách đặt giá trị nhận dạng Guid tùy chỉnh khi chèn
- 29. EF 5 Mã số đầu tiên di chuyển số lượng lớn SQL dữ liệu Seed
- 30. EF Mã Đầu tiên cột bổ sung trong tham gia bảng cho mục đích đặt hàng