1
我目前在學習ASP.NET MVC 5 EF 6的過程現在我堅持用聲明流暢API外鍵,然後播種數據申報表。 這裏是我的代碼:什麼是我在實現外鍵與EF 6的錯誤?
型號:
public class Person
{
public int Id { get; set; }
public ICollection<Anime> DirectedAnimes { get; set; }
}
public class Anime
{
public int Id { get; set; }
public int DirectorId { get; set; }
public Person Director { get; set; }
}
public class AnimeDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Anime> Animes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Anime>()
.HasRequired(a => a.Director)
.WithMany(p => p.DirectedAnimes)
.HasForeignKey(p => p.DirectorId);
base.OnModelCreating(modelBuilder);
}
}
播種數據:
public class AnimeInitializer : DropCreateDatabaseAlways<AnimeDbContext>
{
protected override void Seed(AnimeDbContext context)
{
var persons = new List<Person>
{
new Person { Id = 1 },
new Person { Id = 2 }
};
var animes = new List<Anime>
{
new Anime { DirectorId = 1 },
new Anime { DirectorId = 2 }
};
persons.ForEach(p => context.Persons.Add(p));
context.SaveChanges();
animes.ForEach(a => context.Animes.Add(a));
context.SaveChanges();
}
}
但是,當我取Anime
對象,他們預計DirectorId
值,但其Director
性質是null
:
var director = (new AnimeDbContext()).Animes.First().Director; //null
var directorId = (new AnimeDbContext()).Animes.First().DirectorId; //1
實體框架知道,雖然外鍵,因爲在運行時錯誤的Seed
方法結果添加new Anime {DirectorId = 3}
。
我敢肯定,我的錯誤是非常愚蠢的,由我不是下面的例子正是造成的,但我一直在這個問題了,而已經在努力,但還是無法弄明白。我非常感謝一些幫助。
謝謝,這是造成不確實下列exaples一個愚蠢的錯誤。虛擬添加幫助了我。 – AndreySarafanov 2014-11-24 11:52:17