2013-04-15 41 views
7

Tôi tạo một mô hình bằng EF và tạo ngữ cảnh của nó bằng trình tạo DbContext 5.X. Bây giờ tôi đã đổi tên lớp của một trong những thực thể của tôi. Bây giờ khi tôi chạy mã của tôi, tôi nhận được "Kiểu thực thể Student2 không phải là một phần của mô hình cho ngữ cảnh hiện tại." lỗi.Loại thực thể [Tên] không phải là một phần của mô hình cho ngữ cảnh hiện tại

var context = new MyEntities(connectionString); 
foreach(var student in context.Students) 
{ 
    Console.WriteLine(class.Name.ToString()); 
} 

Trong ngữ cảnh dữ liệu của tôi.

public partial class MyEntities : DbContext 
{ 
    public MyEntities() 
     : base("name=MyEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    // public DbSet<Student> Students { get; set; } -> Origional 
    public DbSet<Student2> Student { get; set; } // I renamed Student to Student2 
} 

Cách khắc phục điều này? Tôi cần phải đổi tên lớp học của tôi do một số xung đột.

+0

Vị trí 'WELL2' đến từ đâu? Cấu trúc của 'Student2' là gì? –

+0

Khi bạn giải quyết được vấn đề của mình, liệu bạn có thể trả lời câu hỏi của mình bằng cách nói cách bạn đã làm nó để khai sáng cộng đồng? –

+0

@GertArnold WELL2 đã nhập nhầm. Tôi đã thêm câu trả lời cho câu hỏi này. http://stackoverflow.com/a/16029086/1077385 –

Trả lời

1

Sử dụng Add-Migration

Đây là mẫu:

Add-Migration "Muster" -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

và cập nhật cơ sở dữ liệu-, như thế này:

Update-Database -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

Trong Visual Studio bạn có thể sử dụng Package Manager Console cho nó. Là một Dự án mặc định, bạn nên chọn dự án Entity Framework - nếu bạn có nhiều dự án.

+0

Xin lỗi, tôi không hiểu điều bạn đang cố nói. –

+1

@FaisalHafeez - Tôi đã cập nhật câu trả lời của mình. Bây giờ có rõ ràng không? – MikroDel

+0

Vẫn không thể nhận được nó. –

0

Đây là giải pháp. Mở giao diện người dùng của tệp Model.edmx và chỉnh sửa tên thực thể Sinh viên thành Student2. Điều này sẽ tạo ra các tập tin và ngữ cảnh mới trong đó Học sinh sẽ được thay thế bởi Student2.

+0

Bạn đã yêu cầu tôi chạy một số lệnh (không làm việc cho tôi). Và những gì tôi đã chỉnh sửa tên thực thể. Sai lầm mà tôi đã làm là tôi đã thay đổi tên lớp của các tập tin được tạo ra nhưng không bảo mô hình sử dụng lớp mới, vì vậy nó không thể tìm thấy lớp mới. –

0

Nhiều hướng dẫn yêu cầu tạo tất cả các lớp bổ sung không cần thiết. Về cơ bản tất cả những gì bạn cần làm, để làm cho công việc khung thực thể là tạo ra mô hình và sau đó tạo đối tượng trong trình điều khiển của bạn.

Ví dụ mẫu: myEntity.edmx Ví dụ Bộ điều khiển:

public class HomeController : Controller 
    { 
     myEntity db = new myEntity(); 

     public ActionResult Index() 
     { 
      return View(db.myTable.ToList()); 
     } 
} 

Mọi thứ khác là trong mô hình tổ chức, vì vậy khi các lỗi đọc: "myEntityContext" không phải là một phần của mô hình" đó là sự thật vì tôi đang tạo một lớp phụ có tên "myEntityContext" trên mỗi hướng dẫn

Khi bạn cố gắng tạo ra một khung nhìn mạnh mẽ với ngữ cảnh mà bạn tạo ra nó sẽ phát nổ, vì nó cố gắng liên kết một lớp không tồn tại trong Vì vậy, bằng cách xóa tất cả DAL và Mô hình ngữ cảnh bổ sung, hãy tạo một chế độ xem mới bằng cách sử dụng Thực thể. bối cảnh hiển thị trong menu xem Mạnh mọi thứ sẽ hoạt động tốt.

tôi đã cùng một vấn đề và posted gì tôi đã làm để sửa chữa nó

12

tôi đã có vấn đề tương tự khi tôi đã có siêu dữ liệu sai trong chuỗi kết nối. Cố gắng tạo lại chuỗi kết nối trong app.config.