Я работаю с 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;}
}
Объекты отображаются в базу данных с двумя таблицами (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 извлекало правильную информацию из базы данных.Как мне это сделать?
Тогда, конечно, нация будет связана с другими национальными союзниками, которые в свою очередь будут иметь другую нацию.Как можно построить рекурсивную карту?Моя идея состоит в том, чтобы перемещаться по карте до определенного уровня, запрашивая базу данных особым образом.При этом, как лучше всего добиться хороших скоростных показателей?