dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Linq To Oracle

Останнє повідомлення 27-11-2007, 6:53 від Mike Chaliy. 11 відповіді.
Сортувати: Попереднє Наступне
  •  26-11-2007, 5:04 4763

    Объясните пожалуйста как обстоят дела с ораклом? Я так понял, что Linq to SQL вообще не будет его поддерживать, но можно использовать Linq to Entities ADO 3.0, но я не пойму где и когда он будет. Последняя версия Entity Framework работает только с Beta2.

    Как на данный момент можно использовать Oracle с linq? И следует ли ждать улучшения ситуации? Tongue Tied

    Помічено як:
  •  26-11-2007, 5:34 4765 у відповідь на 4763

    xiety:

    но я не пойму где и когда он будет. Последняя версия Entity Framework работает только с Beta2.

    Якщо нічого не зміниться то з SQL 2008. Скоро вствновлю November CTP подивлюсь як там зараз.

    xiety:

    Как на данный момент можно использовать Oracle с linq? И следует ли ждать улучшения ситуации? Tongue Tied

    Про щось офіційне я не чув. Але хлопці розробляють щось. Мені здається що покращення не буде. Можливо Оракл самі щось розроблять - це не складно.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  26-11-2007, 6:36 4766 у відповідь на 4765

    Плохая какая-то ситуация. То есть с ораклом вообще никак не получится по работать через Linq? Те ребята ничего толком ещё не сделали.

    IProvider internal, в SqlProvider нет виртуальных методов. Это какая то борьба против оракла? Как же можно пока выкрутиться? И поможет ли Entity Framework?

  •  26-11-2007, 7:35 4768 у відповідь на 4766

    xiety:

    Плохая какая-то ситуация. То есть с ораклом вообще никак не получится по работать через Linq?

    Жодних проблем. LINQ працює з будь чим що реалізує IEnumerable.

    class Test
    {
        public string Test1;
        public string Test2;
    }

    static void Main(string[] args)
    {
        Collection<Test> results = new Collection<Test>();
        results.Add(new Test { Test1 = "D", Test2 = "sdfsdf" });
        results.Add(new Test { Test1 = "D3", Test2 = "sdfsdf" });

        var tt = from rr in results where rr.Test1 == "D" select new { rr.Test2 };

        foreach (var t in tt)
        {
            Console.WriteLine(t.Test2);
        }
    }

    зрозуміло що нема жодних проблем побудувати шар данних так щоб він повертав IEnumerable.

    xiety:

    Те ребята ничего толком ещё не сделали.

    Так, воно може бути лиши прикладом.

    xiety:

    IProvider internal, в SqlProvider нет виртуальных методов. Это какая то борьба против оракла? Как же можно пока выкрутиться?

    Я про екстесібіліті DLINQ вже писав. Там покищо мрак.

    xiety:

    И поможет ли Entity Framework?

    Якщо я не помиляюсь то покищо ні. Я за тиждень буду дивитися у внутроші. Мож що з'явиться.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  26-11-2007, 7:44 4769 у відповідь на 4766

    xiety:
     Это какая то борьба против оракла?

    До чого тут Оракл? Вони не підтримують жодної БД зараз. Це Оракал з собою бореться, бети вже давно були, а вони ще написали нормального рішення. Вони самі будуть собі проблеми.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  26-11-2007, 8:33 4773 у відповідь на 4769

    я понимаю про IEnumerable, но ведь на сервере Oracle таблицы с тысячами записей, их же не хочется все возвращать. -(

  •  26-11-2007, 8:53 4774 у відповідь на 4773

    xiety:

    я понимаю про IEnumerable, но ведь на сервере Oracle таблицы с тысячами записей, их же не хочется все возвращать. -(

    Тоді мабуть залишається IQueryProvider... Хоча такі речі як номер сторінки та кліькість строк можна було б в параметри методів шару данних.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  27-11-2007, 4:29 4780 у відповідь на 4774

    Я поставил полю ReadOnly в редакторе dbml, в дизайнфайле исчез сеттер для этого поля. Само поле приватное. Конструктора нет. Как linq заполняет это поле из БД? Рефлексия на такое способна?

  •  27-11-2007, 5:15 4781 у відповідь на 4780

    xiety:

    Я поставил полю ReadOnly в редакторе dbml, в дизайнфайле исчез сеттер для этого поля. Само поле приватное. Конструктора нет. Как linq заполняет это поле из БД? Рефлексия на такое способна?

    Рефлексія в чистому вигляді не може і я не знаю як тут реалізували, але можу розповісти як у NHiberante, там просто шукають поле. Навіть не шукають, а задають, виглядає це так "access="nosetter.camelcase-underscore", можлво що у LINQ теж є якесь іменування і вони цим користуються.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  27-11-2007, 5:26 4782 у відповідь на 4780

    В LINQ все просто. В атрибуті Column є проперті Storage, це і є поле в яке воно рефлексією запише значення.

    [Column(Storage="_Property2", CanBeNull=false, UpdateCheck=UpdateCheck.Never)]

    "_Property2" - це і є назва поля.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  27-11-2007, 6:35 4784 у відповідь на 4782

    Но это поле приватное. Как в него попадает значение?

    Я нашел, они используют генерацию IL -(

    internal static class FieldAccessor
    {
     internal static MetaAccessor Create(Type objectType, FieldInfo fi)
     {
      DynamicMethod method2 = new DynamicMethod("xset_" + fi.Name, typeof(void), new Type[] { objectType.MakeByRefType(), fi.FieldType }, true);
      iLGenerator = method2.GetILGenerator();
      iLGenerator.Emit(OpCodes.Ldarg_0);

  •  27-11-2007, 6:53 4785 у відповідь на 4784

    xiety:

    Но это поле приватное. Как в него попадает значение?

    Приватні поля без проблем можно записувати. Наприклад за допомогою FieldInfo.SetValue. Але це для коду і за допомгою рефлексії. Якщо генерувати ІЛ то схоже достатньо туди просто записувати. Цього можна було очікувати.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
Переглядати як новосний Блог RSS в XML