我正在使用 EF 4.1 CTP5 和 SQL Server 2008。我需要了解如何解决递归问题。我有以下两个课程:
public class Nation
{
public int ID {get; set;}
public string name {get;set;}
public List<NationAlly> NationAllies {get;set;}
}
public class NationAlly
{
public int ID {get; set;}
public int level {get;set;}
public Nation Owner {get; set;}
public Nation toNation {get;set;}
}
实体通过两个表(Nations 和 NationAllies)映射到数据库。此外,还有两种关系。1) 从 NationAllies.OwnerID 到 Nation.ID 2) 从 NationAllies.ToNationID 到 Nation.ID
当我尝试从数据库中检索 Nation 类型的对象时,我访问了 DbContext 类 NationDB:
Nation selectedNation = ((nationDB.Nations.Include("NationAllies")).Where(m => m.name == "France")).FirstOrDefault();
问题是我得到了一个 selectedNation 对象,它有一个 NationAllies 列表,但列表中的每个 NationAlly 都有字段 toNation = null。首先,我希望字段 toNation 从数据库中检索正确的信息。我该怎么做呢?
然后当然 toNation 将与其他 NationAllies 连接,而后者又将拥有另一个 Nation。怎么可能建立一个递归地图?我的想法是通过以特定方式查询数据库,将地图导航到某个级别。这样做,获得良好速度性能的最佳方法是什么?