У меня есть два объекта, Родитель и Ребенок, в Платформе Объекта.
Родитель имеет набор Дочерних объектов.
В моем запросе я хочу возвратить только Родительские объекты (полностью введенные типы 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 отдельных вызовов только для количества дочерних объектов.
Спасибо за любую справку.
Нет, аннотация не является комментарием. Аннотация добавляется к полю, классу или методу с помощью синтаксиса @ 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 запустил правильный тестовый номер люкс, он должен был получить доступ к источникам вашей программы, а не только к составленному двоичному файлу.
-121--4553973-В отличие от Javadoc тэгов, аннотации Java могут быть отражающими в том смысле, что они могут быть встроены в файлы классов , созданные компилятором, и могут быть сохранены виртуальной машиной Java для извлечения в время выполнения .
Это должно работать:
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, и свойство заполнено.