Как возвратить много Дочерних количеств Наборов () в единственном запросе платформы объекта

У меня есть два объекта, Родитель и Ребенок, в Платформе Объекта.

Родитель имеет набор Дочерних объектов.

В моем запросе я хочу возвратить только Родительские объекты (полностью введенные типы EF) и также количество () Дочерних объектов (это могло быть установлено на свойство на Родителе), но я только хочу сделать это в одном вызове к базе данных, не пишущий пользовательский S-Proc. Действительно ли это возможно?

Важный, я хочу превратить это в единый запрос:

EFContext content = new EFContext();
IQueryable<Parent> parentQuery = context.Parent.Select();
foreach(Parent parent in parentQuery)
{
  parent.NoChildItems = parent.Childs.Count();
}

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

Спасибо за любую справку.

5
задан Stu Thompson 10 January 2010 в 12:49
поделиться

1 ответ

Нет, аннотация не является комментарием. Аннотация добавляется к полю, классу или методу с помощью синтаксиса @ Annotation. Одной из наиболее известных аннотаций является @ Override, используемая для сигнализации метода переопределения метода из суперкласса. Например:

public class MyClass {
  @Override
  public boolean equals(Object other) {
    //...
  }
}

Для получения дополнительной информации см. http://download.oracle.com/javase/1, 5 .0/docs/guide/language/annotations.html .

-121--4553969-

Фактически, до Java5 (т.е. 1,3 или 1,4) комментарии (// или /* */) были единственным способом добавления аннотации (т.е. « metadata »), подлежащей действию.

Одним из классических примеров является способ, с помощью которого структура модульного тестирования StartNg предлагает все свои Java5 @ Annotations в качестве комментариев, если используется StartNg с Java 1.4 .
Но это означает, что чтобы Testng запустил правильный тестовый номер люкс, он должен был получить доступ к источникам вашей программы, а не только к составленному двоичному файлу.

В отличие от Javadoc тэгов, аннотации Java могут быть отражающими в том смысле, что они могут быть встроены в файлы классов , созданные компилятором, и могут быть сохранены виртуальной машиной Java для извлечения в время выполнения .

-121--4553973-

Это должно работать:

IQueryable parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() });

EDIT

Если определено:

public class ParentModel
{
    public Task Parent { get; set; }
    public int ChildCount { get; set; }
}

можно использовать

IQueryable parentQuery = context.Parent.Select(p => new ParentModel { Parent = p, ChildCount = p.Childs.Count() });

EDIT

Можно также:

var parentQuery = context.Parent.Select(p => new { Parent = p, ChildCount = p.Childs.Count() }).ToList();
parentQuery.ForEach(p => p.Parent.ChildCount = p.ChildCount);
var result = return parentQuery.Select(p => p.Parent);

Short, и свойство заполнено.

10
ответ дан 13 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: