我正在使用EF 4.1 CTP5和SQL Server 2008.我需要了解如何解决重复性问题。我有以下2类:并发性问题实体框架
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;}
}
的实体映射到两个表(国家和NationAllies)数据库。此外,还有两种关系。 1)从NationAllies.OwnerID到Nation.ID 2)从NationAllies.ToNationID到Nation.ID
当我尝试从我的数据库检索国家类型的对象,我访问的DbContext类NationDB:
Nation selectedNation = ((nationDB.Nations.Include("NationAllies")).Where(m => m.name == "France")).FirstOrDefault();
问题是我得到一个具有NationAllies列表的selectedNation对象,但列表中的每个NationAlly都具有toNation = null的字段。 首先,我希望字段toNation从数据库中检索正确的信息。我该怎么做呢?
当然,国家将与其他国家联盟相连,而联盟其他国家也将拥有其他国家。怎么可能建立一个递归图?我的想法是通过以特定方式查询数据库来导航地图直到某个级别。这样做,有什么最好的方法来获得良好的速度表现?
你如何映射这些实体。首先,您的代码不会与您的查询进行核对,因为'Nation'中的'name'是整数。另外默认的映射会把'toNation'指向你的情况下的父实体法国。不会有递归。 – 2011-03-26 14:18:35
1)更正了Nation.name中的错误类型2)增加了关于映射的描述 – Francesco 2011-03-26 15:47:31
@Ladislav:您有递归意义,即每个国家都可以有几个NationAlly(s)。每个国家在国家领域都有一个国家,而这个国家又可以有几个国家。在这种情况下,将创建整个层次结构组织或地图。地图的边界当然是有限的(最后是没有产生新分支的“叶子”,即没有盟友的国家)或无限(国家都彼此相互关联) – Francesco 2011-03-26 16:08:55