Mô hình hỗ trợ ngữ cảnh 'ApplicationDbContext' đã thay đổi kể từ khi cơ sở dữ liệu được tạo


85

Trước hết, tôi chưa thấy lỗi này ở bất kỳ nơi nào khác và tôi đoán nó không phải là một bản sao vì vậy hãy đọc toàn bộ tình huống trước.

Mọi thứ đều hoạt động tốt sau đó tôi đã cố gắng cập nhật một trong các lớp mô hình của mình ( lớp Ứng dụng và bản cập nhật hiện được để lại bình luận) mà tôi sẽ liệt kê bên dưới; và bùng nổ, tôi đã mắc phải lỗi xấu xí này.


Mô hình hỗ trợ ngữ cảnh 'ApplicationDbContext' đã thay đổi kể từ khi cơ sở dữ liệu được tạo. Cân nhắc sử dụng Code First Migrations để cập nhật cơ sở dữ liệu ( http://go.microsoft.com/fwlink/?LinkId=238269 ). tại System.Data.Entity.CreateDatabaseIfNotExists 1.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf1.b__e () tại System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Hành động tác vụ) tại System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () tại System.Data.Entity. Internal.LazyInternalContext.b__4 (InternalContext c) tại 1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Actionhành động System.Data.Entity.Internal.RetryAction 1) tại System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () tại System.Data.Entity.Internal.InternalContext.GetEntityType entityType) tại System.Data.Entity.Internal.Linq.InternalSet1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet1.Include (String đường dẫn) tại System.Data.Entity.Infrastructure.DbQuery 1.Include(String path) at System.Data.Entity.QueryableExtensions.Include[T](IQueryable1 nguồn, String đường dẫn) tại System.Data.Entity.QueryableExtensions.Include [T, TProperty] (IQueryable 1 source, Expression1 con đường) tại Microsoft.AspNet.Identity. EntityFramework.UserStore 6.GetUserAggregateAsync(Expression1 lọc) tại Microsoft.AspNet.Identity.EntityFramework.UserStore 6.FindByNameAsync(String userName) at Microsoft.AspNet.Identity.UserManager2.FindByNameAsync (string userName) tại Microsoft.AspNet.Identity.UserManager`2.d__12.MoveNext () --- End của stack trace từ vị trí trước đó ngoại lệ đã được ném --- tại System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Tác vụ nhiệm vụ) tại System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Tác vụ nhiệm vụ) tại ControlPanel.Web.Controllers.AccountController.d__2.MoveNext. : \ Projects \ FULL \ Control Panel \ ControlPanel.Web \ Controllers \ AccountController.cs: dòng 56

Lúc đầu, tôi nghĩ rằng đó có thể là sự cố di chuyển, vì vậy tôi đã loại bỏ hoàn toàn cơ sở dữ liệu, bật lại quá trình di chuyển và thêm một di chuyển Init và cập nhật cơ sở dữ liệu bằng cách sử dụng

update-database -force -verbose

Mọi thứ diễn ra tốt đẹp không có gì phàn nàn, tuy nhiên, bất cứ khi nào tôi cố gắng đăng nhập vào trang web của mình, tôi đều gặp lỗi trước đó. Tôi đã thực hiện việc di chuyển khoảng mười lần mà không thể giải quyết vấn đề.

Đây là các lớp miền của tôi (mô hình):

public class App
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int AppId { get; set; }
    //[Required]
    public virtual string FacebookId { get; set; }
    //[Required]
    public virtual string Secret { get; set; }      
    public virtual List<User> Users { get; set; }
    public virtual List<Post> Posts { get; set; }      
    //public virtual ApplicationUser Admin { get; set; }
}

public class Post
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int PostId { get; set; }
    public virtual string Content { get; set; }
    public virtual string Link { get; set; }
    public virtual string Image { get; set; }
    public virtual bool IsSpecial { get; set; }
    //[Required]
    public virtual App App { get; set; }
    //[Required]
    public virtual DateTime? PublishDate { get; set; }
}

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int UserId { get; set; }

    [MaxLength(500)]
    public virtual string FacebookId { get; set; }

    [MaxLength(500)]
    public virtual string Token { get; set; }

    //[Required]
    public virtual App App { get; set; }
}

Đây là IdentityModels của tôi:

public class ApplicationUser : IdentityUser
{
    public virtual List<App> Apps { get; set; }
    public bool? IsPremium { get; set; }
    [DataType(DataType.Date)]
    public DateTime? LastPublishDateTime { get; set; }
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("dCon")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUser>().ToTable("Admins");
        modelBuilder.Entity<ApplicationUser>().ToTable("Admins");
        modelBuilder.Entity<IdentityUserRole>().ToTable("AdminRoles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("Logins");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("Claims");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles");
    }
}

Bạn có chắc là bạn chưa gặp vấn đề này ở nơi khác không Còn liên kết này thì sao? stackoverflow.com/questions/3600175/…
AndreCruz

4
Không, chúng không giống nhau. để cập nhật cơ sở dữ liệu
a7madx7

Câu trả lời:


139

Đề phòng trường hợp bất kỳ ai khác tình cờ gặp phải điều này, những người đang thực hiện triển khai cơ sở dữ liệu đầu tiên giống như tôi.

Tôi đã thực hiện một thay đổi bằng cách mở rộng ApplicationUserlớp, thêm một trường mới vào AspNetUsersbảng và sau đó gặp lỗi này khi khởi động.

Tôi đã có thể giải quyết vấn đề này bằng cách xóa bản ghi được tạo trong __MigrationHistorybảng (chỉ có một bản ghi ở đó) Tôi cho rằng EF quyết định rằng tôi cần cập nhật cơ sở dữ liệu của mình bằng công cụ di chuyển - nhưng tôi đã tự thực hiện việc này theo cách thủ công.


1
Cơ sở dữ liệu đầu tiên là tốt và điều này đã sửa nó. Bản ghi duy nhất có lần tạo ban đầu đã xảy ra mã trước, nhưng tôi đã sửa đổi nó sau khi sử dụng cơ sở dữ liệu trước và thay đổi bảng trong máy chủ MS SQL.
SolidSnake4444

Đã làm việc. Tôi đã gặp lỗi khi thêm chế độ xem có khung. Lớp ngữ cảnh dữ liệu của chế độ xem làApplicationDbContext
Vincent Saelzler

78

Điều này đã làm việc cho tôi - không cần thay đổi khác.

DELETE FROM [dbo].[__MigrationHistory]

1
Làm việc cho tôi quá. Sửa chữa rất lạ. Tôi nghĩ, đã có một cuộc di cư bị hỏng trong lịch sử. Tôi sẽ cố gắng xóa tất cả các lần di chuyển và tạo lại lần đầu.
hakan

1
@Dave Voyles bạn có thể chạy SQL này trực tiếp trong SSMS
Daniel de Zwaan

1
Làm việc cho tôi too.In một cơ sở dữ liệu bảng này tồn tại trong khi nó dint tồn tại trong cơ sở dữ liệu khác
Tejas

1
Các câu trả lời trên không thể giúp tôi vì mã của tôi vẫn chạy tốt cho đến khi cập nhật mô hình cuối cùng. Câu trả lời của bạn đã thành công. Chúc mừng anh bạn !!
Sithu

3
Điều này KHÔNG phù hợp với tôi và khiến tôi cần phải xóa db, chạy lại quá trình di chuyển và thêm lại dữ liệu. CHĂM SÓC.
adamonstack

35

Bài đăng này đã khắc phục sự cố của tôi. Tất cả chỉ là thêm dòng sau Application_Start()vào Global.asax:

Database.SetInitializer<Models.YourDbContext>(null);

Tuy nhiên, nó gây ra lỗi cơ sở dữ liệu cho mỗi lần chỉnh sửa trong mô hình của bạn và bạn có thể làm mất dữ liệu của mình.


4
Tôi không muốn dữ liệu của mình bị hỏng hoặc mất mát.
Roohullah Allem nói

Không phải là cách tiếp cận tốt nhất thưa ông. Giải pháp Nhưng không đáng tin cậy
Ahsan Aftab

13

Nếu bạn xóa bảng "[__MigrationHistory]" khỏi "cơ sở dữ liệu> Bảng Hệ thống" thì nó sẽ hoạt động.


Nó hoạt động. Nhưng sau khi xóa [__MigrationHistory] bảng, chỉ cần cập nhật EDMX mmodel.
DmitryBoyko

12

Đó là một lỗi kỳ lạ,, cuối cùng không phải lỗi của tôi, đó là của Microsoft ,, Tôi đã cài đặt Entity framework phiên bản "trước khi phát hành" và nó phải chịu trách nhiệm về lỗi này, khi tôi nâng cấp lên phiên bản ổn định. giải phóng nó bị biến mất, cảm ơn mọi người đã tin tôi khi tôi hỏi câu hỏi này, tôi đã tìm kiếm giải pháp trong một tuần hoặc lâu hơn, vì vậy tôi khá chắc chắn rằng vấn đề này không phải ở đâu khác: phiên bản của entity framework.dll đã gây ra vấn đề là 6.0.2 nếu nó giúp.


12

Mọi người đều đau đầu vì lỗi này: Hãy chắc chắn rằng tất cả các projetcs của bạn đều có tham chiếu đến cùng một tổ hợp Entity Framework.

Truyện ngắn dài:

Mô hình của tôi và ứng dụng của tôi nằm trong các tổ hợp khác nhau. Các hội đồng này tham chiếu đến một phiên bản khác của khung thực thể. Tôi đoán rằng hai phiên bản đã tạo một id khác nhau cho cùng một modell. Vì vậy, khi ứng dụng của tôi chạy id của mô hình không khớp với một trong những lần di chuyển mới nhất trong __MigrationHistory. Sau khi cập nhật tất cả các tham chiếu đến bản phát hành EF mới nhất, lỗi không bao giờ xuất hiện nữa.


vâng, đó là trường hợp của tôi, hầu hết các dự án là với ef6.1.3, trong khi dự án thử nghiệm mới được tạo bằng cách nào đó với ef6.0.
ZZZ

7

Tôi đã dành nhiều ngày để giải quyết vấn đề này, phân tích nhiều bài viết khác nhau và thử nhiều phương án và cuối cùng đã sửa được. 2 dự án này trong giải pháp của tôi sử dụng lần di chuyển đầu tiên mã EF:

  • Ứng dụng bảng điều khiển "DataModel" chủ yếu sử dụng làm hợp ngữ chứa tất cả các thực thể đầu tiên mã của tôi, DbContext, Mirgations và kho lưu trữ chung. Tôi đã đưa vào dự án này tệp cơ sở dữ liệu cục bộ trống riêng biệt (trong thư mục DataModel / App_Data) để có thể tạo di chuyển từ Bảng điều khiển Trình quản lý Gói.
  • WebApi, tham chiếu đến dự án DataModel và sử dụng tệp cơ sở dữ liệu cục bộ từ thư mục WebApi / App_Data, không có trong dự án

Tôi gặp lỗi này khi WebApi yêu cầu ...

Môi trường của tôi:

  • Windows 8.1 x64
  • Visual Studio 2015 Professional với Cập nhật 1
  • tất cả các dự án của tôi được nhắm mục tiêu cho .NET Framework 4.6.1
  • EntityFramework 6.1.3 từ NuGet

Ở đây tôi đã thu thập tất cả các nhận xét bạn nên chú ý và tất cả các điều kiện / yêu cầu phải được đáp ứng, để tránh ngoại lệ được đề cập:

  1. Bạn chỉ nên sử dụng một phiên bản của gói EntityFramework Nuget cho tất cả các dự án trong giải pháp của bạn.
  2. Cơ sở dữ liệu, được tạo bằng cách chạy tuần tự tất cả các tập lệnh di chuyển phải có cấu trúc / lược đồ giống như cơ sở dữ liệu bạn nhắm mục tiêu và tương ứng với mô hình thực thể. 3 điều sau phải hoàn toàn tương ứng / phản ánh / khớp với nhau:
    • Tất cả tập lệnh di chuyển của bạn đến cuối cùng
    • Trạng thái mô hình thực thể đầu tiên của mã hiện tại (DbContext, các thực thể)
    • Cơ sở dữ liệu mục tiêu
  3. Cơ sở dữ liệu đích (tệp mdf) phải được cập nhật / tương ứng với tập lệnh di chuyển cuối cùng. Xác minh rằng bảng "__MigrationHistory" trong cơ sở dữ liệu đích của bạn có chứa các bản ghi cho tất cả các tập lệnh di chuyển mà bạn có, điều đó có nghĩa là tất cả các tập lệnh di chuyển đã được áp dụng thành công cho cơ sở dữ liệu đó. Tôi khuyên bạn nên sử dụng Visual Studio để tạo các thực thể và ngữ cảnh mã chính xác đầu tiên tương ứng với cơ sở dữ liệu của bạn, Dự án -> Thêm mục mới -> Mô hình dữ liệu thực thể ADO.NET -> Mã đầu tiên từ cơ sở dữ liệu: Tất nhiên, thay thế, nếu bạn không có cơ sở dữ liệu, bạn có thể viết mô hình theo cách thủ công (các thực thể và ngữ cảnh đầu tiên mã) và sau đó tạo cơ sở dữ liệu và di chuyển ban đầu.
  4. Tên của chuỗi kết nối, ví dụ MyConnectionString trong tệp cấu hình của dự án khởi động (Web.config / App.config):

    <configuration>
      <connectionStrings>
        <add name="MyConnectionString" connectionString="...">
      </connectionStrings>
    <configuration>
    

    phải bằng với tham số được truyền vào hàm tạo của DbContext của bạn:

     public partial class MyDbContext : DbContext
     {
        public MyDbContext()
           : base("name=MyConnectionString"){}
        ...
    
  5. Trước khi sử dụng Bảng điều khiển Trình quản lý Gói , hãy đảm bảo rằng bạn đang sử dụng cơ sở dữ liệu chính xác để cập nhật hoặc tạo di chuyển và dự án cần thiết được đặt làm dự án khởi động của giải pháp. Để kết nối với cơ sở dữ liệu, nó sẽ sử dụng chuỗi kết nối từ tệp .config đó, trong dự án, được đặt làm dự án khởi động.
  6. Và điều chính, đã khắc phục sự cố của tôi: Thật kỳ lạ, nhưng trong thư mục WebApi / bin DataModel.exe của tôi đã cũ, không được làm mới kể từ lần xây dựng cuối cùng. Vì quá trình di chuyển đã được nhúng vào trong assembly DataModel.exe của tôi nên WebApi đã cập nhật cơ sở dữ liệu của tôi bằng cách sử dụng các bản sao cũ. Tôi đã nhầm lẫn tại sao sau khi cập nhật cơ sở dữ liệu trong WebApi, nó không tương ứng với tập lệnh di chuyển mới nhất từ ​​DataModel. Mã sau sẽ tự động tạo (nếu không tồn tại) hoặc cập nhật cho cơ sở dữ liệu cục bộ di chuyển mới nhất trong thư mục WebApi / App_Data của tôi.

       public class WebApiApplication : System.Web.HttpApplication
       {
           protected void Application_Start()
           {
               Database.SetInitializer(new MigrateDatabaseToLatestVersion<ODS_DbContext, Configuration>()); 
               ...
    

    Tôi đã thử giải pháp dọn dẹp và xây dựng lại nhưng nó không giúp được gì, ngoài việc tôi đã xóa hoàn toàn thư mục bin và obj khỏi WebApi, xóa tệp cơ sở dữ liệu khỏi WebApi / App_Data, được xây dựng, khởi động lại WebApi, đưa ra yêu cầu với nó, nó đã tạo cơ sở dữ liệu chính xác - khởi tạo lười biếng (sử dụng dòng trên), tương ứng với lần di chuyển mới nhất và ngoại lệ không xuất hiện nhiều hơn. Vì vậy, điều này có thể khắc phục sự cố của bạn:

    1. xóa thủ công các thư mục bin, obj khỏi dự án khởi động của bạn (tạo / cập nhật cơ sở dữ liệu của bạn)
    2. xây dựng dự án khởi nghiệp của bạn hoặc tốt hơn là dọn dẹp và xây dựng lại tất cả các giải pháp của bạn.
    3. tạo lại cơ sở dữ liệu bằng cách bắt đầu dự án (sẽ thực hiện các dòng ở trên) hoặc sử dụng lệnh "update-database" của Package Manager Console.
    4. kiểm tra thủ công xem db và __MirgationHistory được tạo có tương ứng với tập lệnh di chuyển mới nhất hay không.

3

Điều này có thể xảy ra khi bạn thay đổi chú thích dữ liệu của thuộc tính mô hình. ví dụ: thêm [Bắt buộc] vào thuộc tính sẽ gây ra thay đổi đang chờ xử lý trong thiết kế cơ sở dữ liệu.

Giải pháp an toàn nhất là chạy trên Bảng điều khiển Trình quản lý Gói:

add-migration myMirgrationName

sẽ hiển thị các thay đổi chính xác trong phương thức Up (). Do đó, bạn có thể quyết định xem mình có thực sự muốn áp dụng những thay đổi đó hay không thông qua:

update-database

Nếu không, bạn chỉ có thể xóa lần di chuyển mới nhất khỏi bảng __MigrationHistory và khỏi thư mục Migrations trong Trình khám phá giải pháp.


Đây chắc chắn là câu trả lời tốt nhất mà tôi đã thấy ở đây. Đề xuất xóa lịch sử di cư theo tôi là một ý kiến ​​rất tệ!
mgrenier

Cám ơn bạn đã góp ý. Tôi cũng không thường khuyên bạn nên xóa lịch sử di chuyển, nhưng trong trường hợp cụ thể, điểm di chuyển trước đó không quá khác biệt - tức là OP không thực hiện sửa đổi nhiều mô hình -, vì vậy tôi nghĩ có thể chỉ cần lùi một bước là có thể giúp , bằng cách chỉ xóa (các) bản ghi di chuyển cuối cùng.
Mohamed Nagieb

2

Tôi đang gặp sự cố tương tự như a7madx7, nhưng với bản phát hành ổn định của EF (v6.1.1) và tìm thấy giải pháp được đăng trong:

http://cybarlab.com/context-has-changed-since-the-database-was-create

với biến thể trong: http://patrickdesjardins.com/blog/the-model-backing-the-context-has-changed-since-the-database-was-create-ef4-3

Liên kết thứ 2 bao gồm đề cập cụ thể cho VB ..... "bạn có thể chỉ cần thêm tất cả văn bản dữ liệu đang gặp sự cố này trên phương thức app_start của bạn trong tệp global.asax như thế này" :

Database.SetInitializer(Of DatabaseContext)(Nothing)

NB: Tôi đã phải thay thế "DatabaseContext" bằng tên lớp của tôi đang triển khai DbContext

Cập nhật: Ngoài ra, khi sử dụng cách tiếp cận codefirst để kết nối với các bảng hiện có, hãy kiểm tra cơ sở dữ liệu để xem EF có tạo bảng "_migrationhistory" để lưu trữ các ánh xạ hay không. Tôi đã đặt lại tên bảng này sau đó có thể xóa SetInitializer khỏi global.asax.


2

Chỉ cần xóa Lịch sử di chuyển trong _MigrationHistory trong DataBase của bạn. Nó đã làm việc cho tôi


1

Tôi vừa giải quyết một vấn đề tương tự bằng cách xóa tất cả các tệp trong thư mục trang web và sau đó xuất bản lại nó.


1

xóa tất cả danh tính bảng

Delete _MigrationHistory
Delete AspNetRoles
Delete AspNetUserClaims
Delete AspNetUserLogins
Delete AspNetRoles
Delete AspNetUser

1

Từ menu Công cụ, nhấp vào Trình quản lý gói NuGet, sau đó nhấp vào Bảng điều khiển Trình quản lý Gói (PMC). Nhập các lệnh sau vào PMC.

Enable-Migrations Add-Migration Init Update-Database Update-Database Chạy ứng dụng. Giải pháp cho vấn đề là từ đây


1

Khi tôi đang phát triển, tôi thích sử dụng lớp thực tế này để định cấu hình Migrations.

Hy vọng nó giúp.

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
        this.Configuration.LazyLoadingEnabled = false;
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
        modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

        Database.SetInitializer(new StackOverflowInitializer());
    }

    public class StackOverflowInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
    {
        public StackOverflowInitializer()
        {
            // TODO NOTHING, COMMENT ALL

            // IF CHANGES, RECREATE
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ApplicationDbContext>());

            // CREATE ONLY NOT EXITS
            //Database.SetInitializer<Context>(new CreateDatabaseIfNotExists<ApplicationDbContext>());
        }

    }

    public System.Data.Entity.DbSet<stackoverflow.Models.Company> Companies { get; set; }

}

0

Xóa hàng trong bảng [__MigrationHistory] với sản phẩm cũ hơn đã làm việc với tôi. Câu trả lời này dành cho những người không muốn xóa toàn bộ bảng [__MigrationHistory]. Chỉ cần xóa các hàng có phiên bản cũ hơn trong Cột ProductVersion. Hy vọng nó sẽ giúp một số người!


0

Dưới đây là loại lỗi tương tự mà tôi gặp phải

Mô hình hỗ trợ ngữ cảnh 'PsnlContext' đã thay đổi kể từ khi cơ sở dữ liệu được tạo. Cân nhắc sử dụng Code First Migrations để cập nhật cơ sở dữ liệu ( http://go.microsoft.com/fwlink/?LinkId=238269 ).

Tôi đã thêm phần bên dưới trong sự kiện Bắt đầu ứng dụng của Global.asax để giải quyết lỗi

Database.SetInitializer (null);

Điều này đã khắc phục sự cố


0

đơn giản là lỗi có nghĩa là mô hình của bạn có các thay đổi và không ở trong Đồng bộ hóa với DB, vì vậy hãy chuyển đến bảng điều khiển trình quản lý gói, add-migration foo2 điều này sẽ cung cấp gợi ý về điều gì đang gây ra sự cố, có thể bạn đã xóa thứ gì đó hoặc trong trường hợp của tôi, tôi xóa chú thích dữ liệu . từ đó bạn có thể nhận được sự thay đổi và hy vọng đảo ngược nó trong mô hình của bạn.

sau đó xóa foo2.


0

Tôi biết tôi đến rất muộn, nhưng tôi cũng muốn đóng góp. Lỗi này thực sự kỳ lạ, bởi vì trình duyệt không thể hiểu các thay đổi sẽ được hiển thị như thế nào vì các lớp và thuộc tính của chúng có thể đã thay đổi nhưng không được cam kết với cơ sở dữ liệu.

Vì vậy, hãy làm một điều,

tạo một lần di chuyển trong Bảng điều khiển Trình quản lý Gói (Công cụ> Trình quản lý Gói NuGet> Bảng Điều khiển Trình quản lý Gói) bằng lệnh sau:

add -igration UpdateMigration

trong đó UpdateMigration là tên của quá trình di chuyển của bạn. Bạn có thể đặt cho nó bất kỳ tên nào mà bạn lựa chọn nhưng hãy nêu cụ thể.

Sau đó, chúng tôi chỉ cần cập nhật cơ sở dữ liệu, vì vậy hãy chạy như sau:

cập nhật cơ sở dữ liệu

Bây giờ bạn đã cam kết các thay đổi của mình đối với cơ sở dữ liệu, chỉ cần làm mới trình duyệt của bạn là xong!

Hi vọng điêu nay co ich.


0

điều này xảy ra bởi vì bạn thêm một số thuộc tính vào một trong các mô hình của bạn và bạn đã không update-Database. để giải quyết điều này, bạn phải xóa nó khỏi mô hình hoặc bạn phải add-migration anyProperName với các thuộc tính đó và Update-database.


0

Lỗi này xảy ra với tôi khi tôi thực hiện các thay đổi đối với Mô hình của mình và không thực hiện di chuyển các thay đổi để cập nhật cơ sở dữ liệu.

Nếu bạn đã từng thực hiện các thay đổi đối với mô hình của mình trong Lược đồ di chuyển đầu tiên của mã

Đừng quên thêm di chuyển

add-migration UpdatesToModelProperites 

Lệnh trên sẽ đọc tất cả các thay đổi bạn đã thực hiện trong mô hình và sẽ viết nó trong các phương thức Up () và Down ().

Sau đó, chỉ cần cập nhật cơ sở dữ liệu của bạn bằng lệnh dưới đây.

update-database

Điều này đã làm việc cho tôi.


-2

Xóa db hiện có, tạo db mới cùng tên, sao chép tất cả dữ liệu ... nó sẽ hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.