モデルで最初に作成されたかなり大きなEntityFrameworkデータベースをコードファーストに変換するのにしばらく苦労しています。私は解決できないような問題があります。呼び出しスタック上で次のプロシージャを持つオブジェクトのインスタンスにオブジェクト参照が設定されていません。モデル作成のオブジェクトのインスタンスにEntityFrameworkオブジェクトが設定されていない
ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure
ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntities
投稿を簡略化する私はテストプロジェクトを作成しました。このプロジェクトでは、問題を最も単純な形に変えています。
私は3つのクラス
- ののコレクション、そして持っているCの
Cのcollecitonを持ち、オプションB、オプションのC
- Bを持っていた持っています私はdb.a選択Oでoからコードするvar A =を実行したときに、オプションBとの集まり
public class a { public int Id { get; set; } [Required] public string name { get; set; } public virtual b b { get; set; } [ForeignKey("b")] public int? b_Id { get; set; } public virtual c c { get; set; } [ForeignKey("c")] public int? c_Id { get; set; } } public class b { public int Id { get; set; } public string name { get; set; } public virtual ICollection<a> a_s { get; set; } public virtual ICollection<c> c_s { get; set; } } public class c { public int Id { get; set; } public virtual b b { get; set; } [ForeignKey("b")] public int? b_Id { get; set; } public virtual ICollection<a> a_s { get; set; } } public class MyContext : DbContext { public DbSet<a> a { get; set; } public DbSet<b> b { get; set; } public DbSet<c> c { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<a>() .HasOptional(m => m.b) .WithMany(m => m.a_s); modelBuilder.Entity<b>() .HasMany(m => m.c_s) .WithRequired(m => m.b); modelBuilder.Entity<c>() .HasMany(m => m.a_s) .WithOptional(m => m.c); base.OnModelCreating(modelBuilder); } }
だ、私は上記のエラーを取得します。 hapenningについての情報は全くないので、どこに向けるのかは分かりません。私が本当にモデルファーストから離れたいと思っているので、誰もが私にこの問題を解決するのを手伝ってもらえますか?
namespace MvcApplication2.Controllers { public class HomeController : Controller { public ActionResult Index() { var db = new MyContext(); var a = from o in db.a select o; return View(); } } }
は問題を解決します。ありがとう。注釈と流暢な構文を混ぜ合わせて一致させることができるはずですが、私は永遠に流暢に切り替えるでしょう – Kevin