Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer đơn giản là không hoạt động

Cơ sở dữ liệu sẽ chỉ được tạo khi bạn thực sự sử dụng ngữ cảnh.

Nếu bạn đã ghi đè phương thức Seed trong trình khởi tạo của mình như sau:

protected override void Seed(MyContext context){...}

Mã Seed sẽ chỉ chạy khi bạn sử dụng một phiên bản của MyContext.

Đó là lý do tại sao nó hoạt động khi bạn sử dụng

var ctx = new MyContext();
ctx.Database.Initialize(true);

Bạn luôn có thể buộc nó tạo bằng cách sử dụng ngữ cảnh của bạn trong phương thức Application_Start () trong Global.asax.cs như:

        System.Data.Entity.Database.SetInitializer(new MyInitializer());

        MyContext db = new MyContext();
        db.Database.Initialize(true);
        //or even something like db.Users.Count();

Hoặc nó sẽ được tạo sau này khi bạn sử dụng ngữ cảnh của mình. Có thể nó đã ngừng hoạt động vì bạn đã xóa một số mã sẽ sử dụng ngữ cảnh khi khởi động ứng dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham số hóa một mệnh đề SQL IN

  2. SQLParameter ngăn SQL Injection như thế nào?

  3. Làm cách nào để kiểm tra trạng thái sao chép SQL qua T-SQL?

  4. Ngoại lệ 'Đầu vào được chỉ định không đại diện cho trường hợp địa lý hợp lệ' khi sử dụng SqlGeographyBuilder

  5. SQL, Làm thế nào để kết hợp các kết quả?