Как я могу загрузить связанные объекты при чтении объекта из базы данных? - PullRequest
0 голосов
/ 15 июня 2011

Я вполне уверен, что это проблема с отложенной загрузкой, но после прочтения о отложенной загрузке я все еще не приблизился к решению. Я пытался включить и выключить ленивую загрузку безуспешно. Когда я извлекаю узел из базы данных, родительский и дочерний элементы равны нулю, даже если такие объекты существуют в базе данных.

Я также добавил 'IsReference = true' как попытку решить эту проблему.

Я сделал элементы данных, которые являются ссылками на объекты, виртуальными в какой-то момент, но у меня были проблемы с сериализацией с прокси.

DatabaseContext.cs

public class DatabaseContext : DbContext
{
  public DatabaseContext() : base("DatabaseName")
  {
    Configuration.LazyLoadingEnabled = false;
  }
  public DbSet<Node> Nodes { get; set; }
}

Node.cs

[DataContract(IsReference = true)]
public partial class Node
{

  [DataMember]
  public long ID { get; private set; }

  [DataMember]
  public Node Parent { get; set; }

  [DataMember]
  public ICollection<Node> Children { get; set; }

}

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

см. Загрузка связанных объектов

самый простой способ - использовать .Include("Parent").Include("Children") в вашем запросе

0 голосов
/ 29 июня 2011

В итоге я передал методу включения, которые я хотел, в качестве параметров (можно использовать фактические типы или строки), а затем я зациклил включения, поскольку они возвращают объекты DbQuery и фактически не запрашивают базу данных.Спасибо за ввод @moi_meme (+1).

foreach (var include in includes)
{
  query = query.Include(include);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...