IQueryable в DataAccessor
От: cadet354 Россия
Дата: 25.05.11 08:12
Оценка:
Доброго времени,
нельзя ли сделать чтоб старый добрый DataAccessor возвращал IQueryable,
например:
public abstract class PersonAccessor : DataAccessor
        {
            [SqlQuery("SELECT FirstName, Gender FROM Person WHERE PersonID=@personID")
            public abstract IQueryable GetNameFenderById(int @personID);
        }

sql соответсвенно брался из подготовленного SqlQuery?
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re: IQueryable в DataAccessor
От: IT Россия linq2db.com
Дата: 26.05.11 00:04
Оценка:
Здравствуйте, cadet354, Вы писали:

C>sql соответсвенно брался из подготовленного SqlQuery?


Зачем?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 26.05.11 07:02
Оценка:
Здравствуйте, IT, Вы писали:

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


C>>sql соответсвенно брался из подготовленного SqlQuery?


IT>Зачем?

устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[3]: IQueryable в DataAccessor
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.05.11 07:40
Оценка:
Здравствуйте, cadet354, Вы писали:

C>устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.


использовать ассоциации ведь никто не заставляет, в чем сложность их не трогать там, где они мешаются?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[3]: IQueryable в DataAccessor
От: AlexK78  
Дата: 26.05.11 08:09
Оценка:
C>устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.

SQL-запрос лучше спрятать внутри view в БД.
Re[4]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 26.05.11 08:20
Оценка:
Здравствуйте, rameel, Вы писали:

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


C>>устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.


R>использовать ассоциации ведь никто не заставляет, в чем сложность их не трогать там, где они мешаются?

сложность в определении когда они начнут мешаться, а когда нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[5]: IQueryable в DataAccessor
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.05.11 09:16
Оценка:
Здравствуйте, cadet354, Вы писали:

R>>использовать ассоциации ведь никто не заставляет, в чем сложность их не трогать там, где они мешаются?

C>сложность в определении когда они начнут мешаться, а когда нет.

Я к тому, что одно другому не мешает. Там, где возникают трудности с ассоциациями, строим запрос без них. Например, есть вот у нас такая табличка (примеры взяты из статьи: Linq-провайдер для BLToolkit)

[TableName("Categories")]
public class Category
{
    [PrimaryKey, Identity] public int    CategoryID;
    [NotNull]              public string CategoryName;
                           public string Description;
                           public Binary Picture;

    [Association(ThisKey="CategoryID", OtherKey="CategoryID")]
    public List<Product> Products;
}


Пробуем первый вариант
var q =
    from p in db.Product
    select new
    {
        p.Category.CategoryName,
        p.ProductName
    };


Допустим, что этот запрос гораздо сложнее, и с ассоциациями получается не так красиво как хотелось бы на самом деле, то здесь нам ни что не мешает использовать "старый добрый" linq

var q = 
    from c in db.Categories
    join p in db.Products on c.CategoryID equals p.CategoryID
    select new
    {
        с.CategoryName,
        p.ProductName
    };


Собственно, там где ассоциации не нужны или мешаются, просто не пользуемся. Все средства для этого есть.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[6]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 26.05.11 11:22
Оценка:
Здравствуйте, rameel, Вы писали:
R>Собственно, там где ассоциации не нужны или мешаются, просто не пользуемся. Все средства для этого есть.
какой получается sql вот в чем вопрос, так руками я уже понимаю что произойдет, написав linq надо потом смотреть а что в результате получилось, в статье приводятся такие примеры.
Есть и текущие проблемы реализации,например хранение byte[] сейчас неверное, если он null то sql строится как nvarchar() (хотя может в новой реализации уже это исправлено).
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[7]: IQueryable в DataAccessor
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.05.11 12:13
Оценка:
Здравствуйте, cadet354, Вы писали:

C>какой получается sql вот в чем вопрос, так руками я уже понимаю что произойдет, написав linq надо потом смотреть а что в результате получилось, в статье приводятся такие примеры.


Тогда для чего возвращать IQueryable в DataAccessor'е?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[8]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 26.05.11 12:36
Оценка:
Здравствуйте, rameel, Вы писали:

R>Тогда для чего возвращать IQueryable в DataAccessor'е?

чтоб на каждый чих не делать DTO, часто нужно в репортинге или веб формах вывести некоторую выжимку, BL в которой 0.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[9]: IQueryable в DataAccessor
От: IT Россия linq2db.com
Дата: 26.05.11 15:30
Оценка:
Здравствуйте, cadet354, Вы писали:

R>>Тогда для чего возвращать IQueryable в DataAccessor'е?

C>чтоб на каждый чих не делать DTO, часто нужно в репортинге или веб формах вывести некоторую выжимку, BL в которой 0.

А чем IEnumerable не устраивает?
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 27.05.11 08:49
Оценка:
Здравствуйте, IT, Вы писали:


IT>А чем IEnumerable не устраивает?

а какой тип указывать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[11]: IQueryable в DataAccessor
От: IT Россия linq2db.com
Дата: 27.05.11 13:40
Оценка:
Здравствуйте, cadet354, Вы писали:

IT>>А чем IEnumerable не устраивает?

C>а какой тип указывать?

IEnumerable<MyType>
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 27.05.11 14:22
Оценка:
Здравствуйте, IT, Вы писали:


IT>IEnumerable<MyType>

так весь разговор именно из-за того чтоб был анонимный класс и не писать InvoiceFormDTO and etc.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[13]: IQueryable в DataAccessor
От: IT Россия linq2db.com
Дата: 27.05.11 14:30
Оценка:
Здравствуйте, cadet354, Вы писали:

IT>>IEnumerable<MyType>

C>так весь разговор именно из-за того чтоб был анонимный класс и не писать InvoiceFormDTO and etc.

Можно пример как это могло бы выглядеть?
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: IQueryable в DataAccessor
От: cadet354 Россия
Дата: 30.05.11 06:30
Оценка:
Здравствуйте, IT, Вы писали:

IT>Можно пример как это могло бы выглядеть?

да,я был не прав, видно динамика испортила меня , видимо без dynamic не выйдет каменный цветок.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.