9

dự án của tôi: VS2013, Entity Framework, các hình thức web, cơ sở dữ liệu đầu tiên, nhận dạngngoại lệ sau khi nâng cấp ASP.NET nhận dạng đến 2,0

tôi cập nhật tất cả các gói NuGet của dự án của tôi ngày hôm nay (2014/04/15). Trong số đó, Identity được nâng cấp lên 2.0.0.0.

Tôi nghĩ mọi thứ đang diễn ra tốt đẹp, nhưng rất tiếc khi tôi chạy ứng dụng, câu lệnh sau đây đưa ra một ngoại lệ.

namespace xxx.Models 
{ 
    // You can add User data for the user by adding more properties to your User class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. 
    public class ApplicationUser : IdentityUser 
    { 
    } 

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("MyConnection") 
     { 
     } 
    } 
... 
} 

Thông tin ngoại lệ như sau. Nó yêu cầu tôi làm Code First Migration. Nhưng dự án của tôi là dự án biểu mẫu web cơ sở dữ liệu đầu tiên. Làm thế nào tôi có thể giải quyết vấn đề này? Cảm ơn!


Một ngoại lệ của loại 'System.InvalidOperationException' xảy ra ở Microsoft.AspNet.Identity.EntityFramework.dll nhưng không được xử lý theo mã người dùng

Thông tin thêm: Mô hình sao bối cảnh 'ApplicationDbContext' có đã thay đổi kể từ khi cơ sở dữ liệu được tạo. Điều này có thể xảy ra vì mô hình được ASP.NET Identity Framework sử dụng đã thay đổi hoặc mô hình đang được sử dụng trong ứng dụng của bạn đã thay đổi. Để giải quyết vấn đề này, bạn cần cập nhật cơ sở dữ liệu của mình. 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=301867).
Trước khi bạn cập nhật cơ sở dữ liệu của mình bằng cách sử dụng Code First Migrations, hãy tắt kiểm tra tính nhất quán của lược đồ cho ASP.NET Identity bằng cách thiết lập throwIfV1Schema = false trong hàm tạo của ApplicationDbContext trong ứng dụng của bạn. ApplicationDbContext công cộng(): base ("ApplicationServices", throwIfV1Schema: false)

Trả lời

15

Bạn cần vô hiệu hóa tính nhất quán của lược đồ bằng cách thực hiện những gì lỗi nói. Đây là một điều xảy ra khi bạn nâng cấp từ phiên bản 1.0 lên 2.0.

public ApplicationDbContext() : base("MyConnection", throwIfV1Schema:false) 

Bước tiếp theo - thực hiện di chuyển.

Tất cả những gì nên làm việc sau đó và bạn có thể loại bỏ điều này throwIfV1Schema:false

Bạn cũng có thể có một cái nhìn tại this để biết thêm

+1

Cảm ơn bạn rất nhiều! Những công việc này!! – martial

+0

Đã cố gắng điều này nhưng nó chỉ di chuyển lỗi xa hơn xuống đường. – Craig

0

Vấn đề là ở đây:

public class ApplicationUser : IdentityUser 
{ 
} 

Tôi nghĩ bạn nên thay đổi để partial lớp để mở rộng thực thể trong Entity Framework. Lý do là EF sẽ tạo ra lớp proxy cho mỗi thực thể để kết nối với cơ sở dữ liệu.

Lớp partial phải được viết trong cùng một không gian tên.

+0

Cảm ơn bạn đã gợi ý của bạn. Tôi đã thử nhưng nó không hoạt động. – martial

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