2013-07-29 22 views
20

Tôi đang làm việc trên một dự án sử dụng MVC4 trong Visual Studio 2012 và đã thêm một cột trong bảng.Làm thế nào để cho phép di chuyển để cập nhật cơ sở dữ liệu của tôi trong MVC4?

Bây giờ khi tôi muốn gỡ lỗi dự án của mình, lỗi nói để sử dụng di chuyển để cập nhật cơ sở dữ liệu của tôi.

Tôi phải làm gì?

Tôi đã được tìm kiếm rất nhiều và tìm thấy một số phương pháp như:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    Database.SetInitializer<ResTabelaIndex>(null); 
} 

nhưng không biết làm thế nào và ở đâu để thực hiện điều này ... Đã thử trong app_start, global.asax vv ...

Điều tôi thấy là, để cho phép di chuyển trực tiếp trong bảng điều khiển từ nuget.

Nhưng tôi không thể thực hiện công việc này.

Commands tôi sử dụng:

Enable-Migrations -EnableAutomaticMigrations 

==> consolse nói rằng hơn một bối cảnh đã được tìm thấy. Để cho phép sử dụng, Enable-Migrations -ContextTypeName NameOfTheNamespace.Models.DefaultConnection

Nhưng tôi không biết điều gì là -ContextTypeName, đã thử nhiều nhưng không thể hiểu được.

My Model Code: 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 
using System.Data.Entity.Migrations; 
using System.ComponentModel.DataAnnotations; 
using System.Data.Entity.Infrastructure; 

namespace Vista.Models 
{ 
    public class TabelaIndex 
    { 
     public int ID { get; set; } 
     public string n_empresa { get; set; } 
     public string titulo{ get; set; } 
     public string url { get; set; } 
     public string imagens { get; set; } 
    } 

    public class DefaultConnection : DbContext 
    { 
     public DbSet<TabelaIndex> ResTabelaIndex { get; set; } 
    } 

} 

Trả lời

26

Lỗi nói rằng bạn có hai ngữ cảnh. Khi bạn tạo dự án lần đầu tiên bằng MVC 4, Visual Studio sẽ tạo ngữ cảnh cho mặc định SimpleMembership của bạn (hãy chọn Mô hình/Tài khoản.cs) hoặc làm ctrl+f cho UsersContext, bạn có thể xóa tệp này nếu bạn không sử dụng SimpleMembership. Sau khi loại bỏ bối cảnh này, đi trước và thêm dòng sau vào DefaultConnection lớp học của bạn:

protected override void OnModelCreating(DbModelBuilder builder) 
{ 
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<DefaultConnection,Configuration>()); 
} 

Nếu bạn đã kích hoạt sự di cư một cách chính xác bạn cũng nên có một thư mục có tên Migrations và bên trong nó một lớp Configuration, constructor của nó sẽ giống như thế này (nếu bạn muốn kích hoạt di cư tự động):

public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
} 
+0

FWIW, tôi cần phải thêm " base.OnModelCreating (builder); " đến cuối quá trình ghi đè OnModelCreating của bạn để có được việc di chuyển tự động hoạt động trên máy chủ sản xuất của tôi (sử dụng EF 6). –

1

Nếu bạn có thay đổi nhỏ không cần di chuyển. Bạn có thể thêm cột vào bất kỳ bảng nào trên cơ sở dữ liệu với tập lệnh sql và thêm thuộc tính vào mô hình và xóa bảng siêu dữ liệu. (sao lưu cơ sở dữ liệu trước hết không nghi ngờ gì).

Hoặc bạn có thể sử dụng Migrations như thế này: aspnet-mvc-4-entity-framework-scaffolding-and-migrations

2

Hãy thử gõ lệnh sau trên giao diện điều khiển:

Enable-Migrations -ContextTypeName Vista.Models.DefaultConnection 

Vista.Models.DefaultConnection là bối cảnh của bạn (lớp kế thừa từ DbContext).

19

Commands:

  1. enable-migrations default context
  2. add-migration InitialCreate (để tạo ra ảnh chụp)
  3. add-migration InitialCreate (áp dụng bản chụp)
  4. update-database
  5. update-database -verbose

explination Chi tiết sẽ ở đây: http://www.dotnet-tricks.com/Tutorial/entityframework/R54K181213-Understanding-Entity-Framework-Code-First-Migrations.html

+2

Bạn có thể vui lòng [sửa] trong phần giải thích lý do tại sao các lệnh này trả lời câu hỏi? Các câu trả lời chỉ có mã được [nản chí] (http://meta.stackexchange.com/q/148272/274165), bởi vì chúng không dạy giải pháp. (Bài đăng này đã được gắn cờ bởi ít nhất một người dùng, có lẽ vì họ nghĩ rằng một câu trả lời không cần giải thích sẽ bị xóa.) –

+0

Cảm ơn đặc biệt cho Mô tả chi tiết LINK –

+0

cập nhật cơ sở dữ liệu-script để tạo sql –

Các vấn đề liên quan