Я некоторое время пытаюсь преобразовать довольно большую базу данных EntityFramework, созданную в модели сначала коду. У меня есть проблема, которую я не могу решить. Я получаю ссылку на объект, не установленную в экземпляр объекта со следующими процедурами в стеке вызовов.Объект EntityFramework не установлен на экземпляр объекта в создании модели
ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure
ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntities
для упрощения публикации Я создал тестовый проект, который сводит проблему до ее простейшей формы.
У меня есть 3 классов
- а, который имеет имеет дополнительный б и дополнительный с
- б, который имеет коллекцию через х, а в colleciton С в
с, который имеет по желанию б и взимание этого
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); } }
, когда я выполняю код уаг а = с о в db.a выберите о, я получаю ошибку, описанную выше. Нет абсолютно никакой информации о том, что такое hapenning, поэтому я действительно не знаю, куда обратиться. Может ли кто-нибудь помочь мне решить эту проблему, так как я действительно хочу отойти от модели 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(); } } }
, что устраняет проблему. Благодарю. Кажется, что вы должны иметь возможность смешивать и сопоставлять аннотации и свободный синтаксис, но я думаю, что я переключусь на бегство на все – Kevin