.net 使用实体框架保存实体图

cx6n0qe3  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(226)

我正在使用Entity Framework 6编写数据访问层。我想要的是,当我在DbContext上调用SaveChanges()方法时,它将保存实体以及通过导航属性关联的相关实体集。以下是我尝试执行的简单代码。

  1. public class Customer
  2. {
  3. public long ID { get; set; }
  4. public string Name { get; set; }
  5. public virtual IEnumerable<PhoneNumber> { get; set; }
  6. }
  7. public class PhoneNumber
  8. {
  9. public long ID { get; set; }
  10. public string Number { get; set; }
  11. }
  12. public class SampleContext : DbContext
  13. {
  14. public virtual DbSet<Customer> Customers { get; set; }
  15. public virtual DbSet<PhoneNumber> PhoneNumbers { get; set; }
  16. }
  17. using(var context = new SampleContext())
  18. {
  19. var customer = new Customer { ID = 1, Name = "John" };
  20. customer.PhoneNumbers = new PhoneNumbers[]
  21. {
  22. new PhoneNumber { ID = 1, Number = "1.111.1111111" },
  23. new PhoneNumber { ID = 2, Number = "1.111.1111112" }
  24. }
  25. context.Customers.Add(customer);
  26. context.SaveChanges();
  27. }

字符串
上面的代码将客户保存在customers表中,但在PhoneNumbers表中不保存任何内容。

wgmfuz8q

wgmfuz8q1#

奇怪,但找到了一个解决方案。上述代码需要一点修改,使其工作。以下是修改:

  1. // In Customer class, changed following line:
  2. public virtual IEnumerable<PhoneNumber> { get; set; }
  3. // To:
  4. public virtual ICollection<PhoneNumber> { get; set; }
  5. // Then in using block initialized entities as follows:
  6. using(var context = new SampleContext())
  7. {
  8. var customer = new Customer { ID = 1, Name = "John", PhoneNumbers = new List<PhoneNumber>() };
  9. customer.PhoneNumbers.Add(new PhoneNumber { ID = 1, Number = "1.111.1111111" });
  10. context.Customers.Add(customer);
  11. context.SaveChanges();
  12. }

字符串

展开查看全部

相关问题