using (DbManager db = new DbManager())
{
List<Parent> parents = db
.AddCommand<Parent> ("SELECT * FROM Parent")
.AddCommand<Child> ("SELECT * FROM Child")
.AddCommand<GrandChild>("SELECT * FROM GrandChild")
.ExecuteRelations<Parent>();
}
в перспективе, думаю, можно будет делать так:
public abstract calss ParentAccessor : DataAccessor<Parent, ParentAccessor>
{
[Command(typeof(Parent), "SELECT * FROM Parent")]
[Command(typeof(Child), "SELECT * FROM Child")]
[Command(typeof(GrandChild), "SELECT * FROM GrandChild")]
public abstract List<Parent> SelectAll();
}
Здравствуйте, ili, Вы писали:
IT>>Чем это отличается от одной команды и указания списка объектов?
ili>вообще ничем, только не все провайдеры поддерживают возврат нескольких кортежей
Какие не поддерживают?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Хорошо бы перепроверить.
проверю на днях
ili>>а если кортежи хранимками выдергиваются, то как быть?
IT>Точно так же. Хранимка вызывает три селекта и нам приезжает три рекордсета.
нет, я имел ввиду, что одна хранимка — один селект. хотя, возможно, что для нужд выдергивания иерархий объектов это ни есть хороший стиль писания хранимок...
Здравствуйте, ili, Вы писали:
ili>нет, я имел ввиду, что одна хранимка — один селект. хотя, возможно, что для нужд выдергивания иерархий объектов это ни есть хороший стиль писания хранимок...
Как правило иерархии выбираются не целиком вся база, а по определённым условиям. В этом случае запрос может быть очень не тривиальным и использовать параметры и временные таблицы.
Если нам не помогут, то мы тоже никого не пощадим.
ili>в хардкоде не поддерживает =\
ili>с др. стороны, можно сказать, что это "проблемы клиента"... мол стандарт определен...
и еще один момент мне неизвестен — невозможность возврата нескольких кортежей это трабла клиента или сервера?... т.е. может ли сервер подобного не поддерживать?
Re[8]: ExecuteRelations
От:
Аноним
Дата:
30.03.09 21:34
Оценка:
Здравствуйте, ili, Вы писали:
ili>>Здравствуйте, IT, Вы писали: IT>>>Хорошо бы перепроверить.
Сервер не поддерживает, но доказательств найти не могу. В каких-то старых роадмапах вроде планировали, но теперь нет.