我的数据库上有M对N的关系。我从MySql页面上获取了示例数据库“ sakila”。我已经按照以下步骤设置了我的模型对象。
电影表
public partial class Film
{
public Film()
{
FilmActor = new HashSet<FilmActor>();
FilmCategory = new HashSet<FilmCategory>();
Inventory = new HashSet<Inventory>();
}
//Some Properties
public ICollection<Inventory> Inventory { get; set; }
}
链接表清单
public partial class Inventory
{
public Inventory()
{
Rental = new HashSet<Rental>();
}
public int InventoryId { get; set; }
public short FilmId { get; set; }
public byte StoreId { get; set; }
public DateTimeOffset LastUpdate { get; set; }
public Film Film { get; set; }
public Store Store { get; set; }
public ICollection<Rental> Rental { get; set; }
}
存储表
public partial class Store
{
public Store()
{
Customer = new HashSet<Customer>();
Inventory = new HashSet<Inventory>();
Staff = new HashSet<Staff>();
}
//More Properties
public ICollection<Inventory> Inventory { get; set; }
}
当我通过存储库检索数据时,我会返回一个 Store 对象列表,该对象具有一个清单列表,该列表具有一个影片列表和一个影片列表... 换句话说:商店[2]->库存[2270]->电影->商店[2]->库存...是无限的。
那么当我的模型到达电影对象时,如何使此停止?
答案 0 :(得分:1)
Entity Framework在查询数据库对象时会默认跟踪它们。如果通过延迟加载或急切加载在查询中获取子对象或父对象,则这些对象将“存储”在(本地)上下文中。
这意味着,每当您进入调试模式并遇到断点时,您都可以无限浏览对象树。 在运行时,这对性能没有真正的影响。