ExecuteRelations
От: ili Россия  
Дата: 30.03.09 04:43
Оценка:
есть идея сделать так:

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();
}
Re: ExecuteRelations
От: IT Россия linq2db.com
Дата: 30.03.09 05:25
Оценка:
Здравствуйте, ili, Вы писали:

ili>
ili>using (DbManager db = new DbManager())
ili>{
ili>    List<Parent> parents = db
ili>        .AddCommand<Parent>    ("SELECT * FROM Parent")
ili>        .AddCommand<Child>     ("SELECT * FROM Child")
ili>        .AddCommand<GrandChild>("SELECT * FROM GrandChild")
ili>        .ExecuteRelations<Parent>();
ili>}
ili>


Чем это отличается от одной команды и указания списка объектов?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 11:21
Оценка:
Здравствуйте, IT, Вы писали:

IT>Чем это отличается от одной команды и указания списка объектов?


вообще ничем, только не все провайдеры поддерживают возврат нескольких кортежей
Re[3]: ExecuteRelations
От: IT Россия linq2db.com
Дата: 30.03.09 13:25
Оценка:
Здравствуйте, ili, Вы писали:

IT>>Чем это отличается от одной команды и указания списка объектов?


ili>вообще ничем, только не все провайдеры поддерживают возврат нескольких кортежей


Какие не поддерживают?
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 13:40
Оценка:
Здравствуйте, IT, Вы писали:

IT>Какие не поддерживают?


для файербёрда, например, (хотя это давно было...может щас работат.. внятного ченджлога я не нашел... )

а если кортежи хранимками выдергиваются, то как быть?
Re[5]: ExecuteRelations
От: IT Россия linq2db.com
Дата: 30.03.09 14:00
Оценка:
Здравствуйте, ili, Вы писали:

ili>для файербёрда, например, (хотя это давно было...может щас работат.. внятного ченджлога я не нашел... )


Хорошо бы перепроверить.

ili>а если кортежи хранимками выдергиваются, то как быть?


Точно так же. Хранимка вызывает три селекта и нам приезжает три рекордсета.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 14:07
Оценка:
Здравствуйте, IT, Вы писали:

IT>Хорошо бы перепроверить.


проверю на днях

ili>>а если кортежи хранимками выдергиваются, то как быть?


IT>Точно так же. Хранимка вызывает три селекта и нам приезжает три рекордсета.


нет, я имел ввиду, что одна хранимка — один селект. хотя, возможно, что для нужд выдергивания иерархий объектов это ни есть хороший стиль писания хранимок...
Re[7]: ExecuteRelations
От: IT Россия linq2db.com
Дата: 30.03.09 14:35
Оценка: 1 (1)
Здравствуйте, ili, Вы писали:

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


Как правило иерархии выбираются не целиком вся база, а по определённым условиям. В этом случае запрос может быть очень не тривиальным и использовать параметры и временные таблицы.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 14:35
Оценка:
Здравствуйте, IT, Вы писали:

IT>Хорошо бы перепроверить.


из FbDataReader:

        public override bool NextResult()
        {
            return false;
        }


в хардкоде не поддерживает =\

с др. стороны, можно сказать, что это "проблемы клиента"... мол стандарт определен...
Re[2]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 14:50
Оценка:
Здравствуйте, IT, Вы писали:

IT>Чем это отличается от одной команды и указания списка объектов?


ммм... а если один из кортежей пустой, это не собъет порядок кортеж-тип? а то я
Re[7]: ExecuteRelations
От: ili Россия  
Дата: 30.03.09 14:52
Оценка:
Здравствуйте, ili, Вы писали:

ili>Здравствуйте, IT, Вы писали:


IT>>Хорошо бы перепроверить.


ili>из FbDataReader:


ili>
ili>        public override bool NextResult()
ili>        {
ili>            return false;
ili>        }
ili>


ili>в хардкоде не поддерживает =\


ili>с др. стороны, можно сказать, что это "проблемы клиента"... мол стандарт определен...


и еще один момент мне неизвестен — невозможность возврата нескольких кортежей это трабла клиента или сервера?... т.е. может ли сервер подобного не поддерживать?
Re[8]: ExecuteRelations
От: Аноним  
Дата: 30.03.09 21:34
Оценка:
Здравствуйте, ili, Вы писали:

ili>>Здравствуйте, IT, Вы писали:

IT>>>Хорошо бы перепроверить.

Сервер не поддерживает, но доказательств найти не могу. В каких-то старых роадмапах вроде планировали, но теперь нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.