2016-07-19 7 views
-1

코드를 먼저 사용합니다. 엔티티 프레임 워크에서 접근하지만 테이블에 기본 데이터를 시드 할 수 없습니다. 도와주세요.Entity Framework 코드 첫 번째 시드 데이터

모델

public class Employee 
    { 
     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Gender { get; set; } 
     public int Salary { get; set; } 


     public virtual Department Departments { get; set; } 

    } 
public class Department 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Location { get; set; } 
     public virtual ICollection<Employee> Employees { get; set; } 

     public Department() 
     { 
      this.Employees = new List<Employee>(); 
     } 

    } 

이니셜

public class DepartmentInitializer : DropCreateDatabaseIfModelChanges<EmployeeDBContext> 
    { 
     protected override void Seed(EmployeeDBContext context) 
     { 
      IList<Department> lst = new List<Department> 
      { 
       new Department 
       { 
        Name = "Developer", 
        Location = "Bangalore" 
       }, 
       new Department 
       { 
        Name = "Tester", 
        Location = "Bangalore" 
       }, 
       new Department 
       { 
        Name = "IT Services", 
        Location = "Chennai" 
       } 
      }; 
      foreach (var item in lst) 
      { 
       context.Departments.Add(item); 
      } 
      context.SaveChanges(); 
     } 
    } 

홈페이지 앱이

class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var db = new EmployeeDBContext()) 
      { 
       Database.SetInitializer<EmployeeDBContext>(new DepartmentInitializer()); 
      } 
     } 
    } 
+0

사용중인 EF 버전은 무엇입니까? 시드는 다른 버전으로 변경되었습니다. – WillC

+0

EF 버전 6.1.3 –

답변

0

는 "Configuration.Seed"방법을 사용하여 버전으로 바람직한 방법 데이터베이스이며 패키지 관리자 콘솔에서 "Update-Database"를 실행 해 보았습니까?

EF6을 사용하여 이전 시드 방법을 사용하는 데 문제가 있음을 알고 있습니다. Entity Framework Core 1 (이전 EF7)의 마이그레이션도 변경되었으므로 올바른 기술을 올바른 버전에 적용해야합니다.

+0

동일한 방법으로 시도했지만 작동하고 있었는데, 위의 방법이 EF 6에서 작동하지 않는 이유는 무엇입니까? –

+0

난 시드의 메서드를 올바르게 호출하지 DatabaseContext에서 클래스의 상속과 함께하는 것 같아요. 참조 : http://stackoverflow.com/questions/25524238/seed-method-not-called-entity-framework-6 – WillC

0

실제로 내 컴퓨터에 DB

를 조회하려고하면 시더 실행 나는 그것을 쿼리 첫 번째 티 나를.

http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-3

이 가이드에 도시 ​​된 바와 같이, '이주'를 이용

엔티티 Framework 버전 6
using (var db = new EmployeeDBContext()) 
{ 
    Database.SetInitializer<EmployeeDBContext>(new DepartmentInitializer()); 
    var depts = db.Departments.ToList(); 
} 
+0

테이블이 이미 존재합니다 –

+0

@ S.Sagar 글쎄, 만약 당신의 db가 이미 존재한다면, 그걸 다시 채우지 않을 것입니다. 'DropCreateDatabaseIfModelChanges'는 데이터베이스 모델이 변경되거나 데이터베이스를 삭제하는 경우에만 다시 시드합니다. –

+0

Employee Class에서 하나의 스칼라 속성을 추가하여 모델을 변경했습니다. 그러나 여전히 성공하지 못했습니다. –

관련 문제