2017-10-09 11 views
2

を見つけていない、私はPMでAdd-Migrationのコマンドを実行している場合は、私の移行はEFコア2.0Entity Frameworkのコア2.0は、移行

によって認識されていない奇妙な問題を抱えている、MyFirstMigrationクラスはMigrationsフォルダ内に作成されます。

コンテキスト:

Protected Overrides Sub OnConfiguring(optionsBuilder As DbContextOptionsBuilder) 
    optionsBuilder.UseSqlite("Data Source=blogging.db") 
End Sub 

PMコード:

PM> Add-Migration MyFirstMigration 
To undo this action, use Remove-Migration. 
PM> Update-Database 
No migrations were applied. The database is already up to date. 
Done. 

私はdababaseファイルをチェック

__EFMigrationsHistory表が存在するが、ないブログテーブル。 疑問に思うかもしれませんが、db.SaveChanges()を実行すると例外がスローされ、テーブルが存在しないことがわかります。 db.Database.Migrate()を実行

は何もしませんが、私は、DBファイルを削除し、db.Database.EnsureCreated()を実行すると、正しいデータベースが作成されます。

__EFMigrationsHistoryテーブルが空に作成されているため、Update-Databaseの直後に次の移行を作成することができます。最初のものとまったく同じコードが生成されます。

私はWP 15.3.5および.Net 4.6.1をWPFで使用しています。

/敬具

答えて

1

Add-MigrationはVB.NETプロジェクトにC#ファイルを追加していますか?それらを別のC#プロジェクトに追加し、DbContextアセンブリから参照して、OnConfiguringを次のように更新することができます。

optionsBuilder.UseSqlite("Data Source=blogging.db", Sub(x) x.MigrationsAssembly("MyCSharpProject")) 
+1

これは奇妙なことです。 私はそれがMicrosoft.CSharp参照を追加していることがわかります。これはおそらくVSがcsファイルについて不平を言っていない理由です。 基本的には、EF6を使うのがはるかに簡単だと信じるのは難しいので、実際にORMのない人は、VBのanf F#(彼らには同じ問題があると信じています)の人々に任せます。そのようなことは、実際には「限られたサポート」としてのドキュメントにあるはずです。 – Dimka

+1

[#6401](https://github.com/aspnet/EntityFrameworkCore/issues/6401)と[#8012](https://github.com/aspnet/EntityFrameworkCore/issues/8012)も参照してください。 – bricelam

0

私はその後、私は非常に明白ではない何かに気づいた、私の移行はどのエンティティが含まれていなかったこの問題を持っていました。 DbContextクラスは、それ自身のメンバ変数を調べ、生成された移行に流暢/属性モデルのプロパティを適用します。

だからあなたDbContextはこのような何かを持っていることを確認してください。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
     : base(options) 
    { 
    } 

public virtual DbSet<Blog> Blogs { get; set; } 

はまた、あなたが新しい移行を生成するために必要な変更を行った後に覚えています。これは、常に新しい変更を適用するために使用されていたupdate-database(PMC)の以前とは少し違っているようです。

関連する問題