На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Entity sql
    Поставили вот на компы 4й фреймворк. Я такой обрадовался, кароче, думаю можно будет теперь вместо громадных лефт жойнов на linq2sql писать на entitysql небольшой код текстом, удобно очень будет, наверно.

    ExpandedWrap disabled
      ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(@"SELECT VALUE row (p.id as id, p.Name as name ) FROM patchEntities.Pribor AS p join patchEntities.Type As t on p.id_type = t.id", m_dc);
       
                  var pribors = query.ToList().Select(x =>
                      new Predmet {
                          id = (int)x["id"],
                          name = x["name"].ToString()
                      });


    Пока получился такой вот монстр. Не очень удобно, конечно. а вы как его используете?
      Я немного вас не понимаю. Если вы используете EF, то вместо такого кода можно же написать такой. Писал по тому коду что привели вы, так что могут быть ошибки.
      ExpandedWrap disabled
        //Вариант 1
                    var result = from p in patchEntities.Pribor
                                 join s in patchEntities.Type
                                     on p.id_type equals s.id
                                 select new Predmet
                                     {
                                         id = p.id,
                                         name = p.Name
                                     };
                    //Вариант два (точечная нотация или Fluent API)
                    var query = patchEntities.Pribor         // source
                       .Join(patchEntities.Type,         // target
                          c => c.id_type,          // FK
                          cm => cm.id,             // PK
                          (c, cm) => new { Id = c.id, Name = c.Name }) // project result
                       .Select(x => new Predmet
                           {
                               id = x.Id,
                               name = x.Name
                           });  // select result

      Я для запросов использую sql-подобный синтаксис. Как по мне то он лучше отражает суть запросов к базе, и более компактный. Этот монстр по размеру будет меньше чем ваш. Есть еще такая штука как Dynamic LINQ, о том как ее использовать можете посмотреть здесь
      Сообщение отредактировано: Craft -
        я так мог и в третьем,5 фрейморке делать. Я не понимаю приемущества Entity Frameworka. Мне старый l2sql больше удобств давал.
        К примеру я в source любой таблицы мог поставить Database1.dbo.Table1 а во втором dbml файле у меня была таблица Database2.dbo.Table2
        И я их мог спокойно сджойнивать без проблем, добираясь до второй таблицы через dataContext.GetTable<Table2>() без запарок.

        Добавлено
        Цитата Craft @
        Если вы используете EF, то вместо такого кода можно же написать такой.

        Ну я понял. Я всё время пишу такой код =). Просто я думал, что с переходом на ef буду писать на майкрософтовском эскюэле, и бед не знать.
          А не проще ли код который вы хотите писать в MS SQL вынести в процедуры и замапить их через EF? Это один из плюсов. Второй плюс в том что кроме стандартной генерации классов в EF можно дописать кастомный мапинг на базу данных и добавить необходимые атрибуты через T4. Как по мне то EF классная штука. Но использовать ее или нет, это дело сугубо вкуса. То же самое можно делать и на NHibernate и на BLToolkit. Выбирайте инструмент так чтобы с ним было удобно работать вам. Если не нравится EF но все таки он используется в проекте, то можно писать запросы напрямую в БД, подобно таким которые вы привели как пример.
            В том то и дело, что пока сам не столкнёшься с новой системой обработки данных - не узнаешь, на сколько он тебе удобен.
            А что за Т4 ? Я много, что гуглил - ничего не нашёл. Разве что тип один на Стэковерфлов пытался в схему добавить строчку вида "base.dbo", но так не канает. Ему посоветовали в текущей базе сделать вьюшки, но меня такой поворот не устраивает.
              Цитата Koss @
              А что за Т4

              Text Template Transformation Toolkit
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0445 ]   [ 17 queries used ]   [ Generated: 25.04.24, 05:14 GMT ]