我一直在努力一段時間來將在模型中創建的相當大的EntityFramework數據庫轉換爲codefirst。我有一個問題,我似乎無法解決。我在調用堆棧上獲取了一個沒有設置爲對象實例的Object引用,其中包含以下過程。EntityFramework對象未在模型創建中設置爲對象的實例
ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure
ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntities
簡化後我創建了一個測試項目,將問題歸結爲最簡單的形式。
我有3個班
- 一個它有一個具有可選B和任選的C具有的集合
- B和C的
℃的colleciton它有一個可選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); } }
當我選自O在db.a選擇o執行代碼VAR一個=,我得到上述錯誤。關於發生什麼事絕對沒有信息,所以我真的不知道該在哪裏轉。任何人都可以幫助我解決這個問題,因爲我真的想從Model First中移走。
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(); } } }
解決了這個問題。謝謝。看來你應該能夠混合和匹配註釋和流利的語法,但我想我會切換到流暢的everthing – Kevin 2012-03-20 10:59:34