EF7 (코드 우선) + SQLite는 데이터베이스와 모델 테이블을 생성하지 않습니다.

entity-framework-core sqlite win-universal-app

문제

현재 EF7 및 SQLite를 사용하여 Universal Windows Platform app을 만드는 설명서 http://ef.readthedocs.org/en/latest/getting-started/uwp.html 에서 예제를 다시 만들려고합니다.

필요한 EF7 및 EF7 명령 패키지를 설치하고 모델 및 컨텍스트를 작성했습니다.

 public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            string dirPath = ApplicationData.Current.LocalFolder.Path;
            string connectionString = "Filename=" + Path.Combine(dirPath, "blogging.db");
            optionsBuilder.UseSqlite(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

내 문제는 지금 솔루션을 빌드 한 후 마이 그 레이션을 스캐 폴딩하여 내 모델의 초기 테이블 세트를 작성해야하는 명령이 다음 예외와 함께 실패한다는 것입니다.

 public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            string dirPath = ApplicationData.Current.LocalFolder.Path;
            string connectionString = "Filename=" + Path.Combine(dirPath, "blogging.db");
            optionsBuilder.UseSqlite(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

누구든지이 문제에 대한 해결책을 가지고 있습니까? 미리 감사드립니다.

수락 된 답변

필자의 경우 문제의 해결책은 app이 시작되기 전에 app.xaml에 코드를 통해 데이터베이스와 테이블을 생성하는 것이었다.

using (var db = new BloggingContext())
{
    db.Database.EnsureCreated();
    db.Database.Migrate();
}

컨텍스트 + 모델 :

using (var db = new BloggingContext())
{
    db.Database.EnsureCreated();
    db.Database.Migrate();
}

또한 데이터베이스에 액세스하기 전에 해당 데이터베이스가 생성되었는지 확인하십시오.

using (var db = new BloggingContext())
{
    db.Database.EnsureCreated();
    db.Database.Migrate();
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.