Re[30]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 26.03.06 17:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А чем BLToolkit лучше iBatis.NET?


Думаю, что у iBatis.NET (кстати, а что это такое?) есть как минимум один фатальный недостаток.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[31]: ORM vs Linq and BLToolkit :)
От: vladserge Россия  
Дата: 26.03.06 17:23
Оценка:
Здравствуйте, IT, Вы писали:

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


C>>А чем BLToolkit лучше iBatis.NET?


IT>Думаю, что у iBatis.NET (кстати, а что это такое?)


возможно это

IT>есть как минимум один фатальный недостаток.


этот баг неистребим.
С Уважением Сергей Чикирев
Re[30]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 26.03.06 17:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А чем BLToolkit лучше iBatis.NET?

А кто сказал лучше? Он другой. Он более основан на xml.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[23]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 26.03.06 17:25
Оценка:
Здравствуйте, IT, Вы писали:

IT>Так заезжай, обсудим ORM vs вселенная.

Не раньше чем годика через два.
IT>Кеттел ван и солёные огурчики с меня
Местный первач? С удовольствием.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[32]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 26.03.06 17:34
Оценка:
Здравствуйте, vladserge, Вы писали:

IT>>Думаю, что у iBatis.NET (кстати, а что это такое?)


V>возможно это


Судя по описанию, это лишь небольшая часть BLToolkit. Впрочем, спасибо за ссылочку, надо будет оттуда что-нибудь стырить

IT>>есть как минимум один фатальный недостаток.


V> этот баг неистребим.


На самом деле, когда начинался делаться BLToolkit, точнее тогда ещё RFD, в 2002 году, то никаких подобных вещей, даже портов с джавы ещё не было. Это уже потом всякие ORM начали расти как грибы.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[24]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 26.03.06 17:45
Оценка: :)
Здравствуйте, GlebZ, Вы писали:

IT>>Кеттел ван и солёные огурчики с меня

GZ>Местный первач? С удовольствием.

Обижаешь, местного я не пью даже пива
http://www.ketelone.com/ — водка из Нидерланд с русской историей.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[33]: ORM vs Linq and BLToolkit :)
От: Cyberax Марс  
Дата: 26.03.06 18:55
Оценка:
Здравствуйте, IT, Вы писали:

IT>Судя по описанию, это лишь небольшая часть BLToolkit. Впрочем, спасибо за ссылочку, надо будет оттуда что-нибудь стырить

У нас тут люди говорят, что iBatis'е намного больше функциональности, чем в BLToolkit.

IT> На самом деле, когда начинался делаться BLToolkit, точнее тогда ещё RFD, в 2002 году, то никаких подобных вещей, даже портов с джавы ещё не было. Это уже потом всякие ORM начали расти как грибы.

В 2002 году надо было на Java писать — там уже были и ORM (Hibernate 1.2) и iBatis
Sapienti sat!
Re[34]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 26.03.06 19:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

IT>>Судя по описанию, это лишь небольшая часть BLToolkit. Впрочем, спасибо за ссылочку, надо будет оттуда что-нибудь стырить

C>У нас тут люди говорят, что iBatis'е намного больше функциональности, чем в BLToolkit.

В плане DataManager и Mapping? Возможно. Поэтому я и говорю, что надо будет там чего-нибудь потырить. Но BLToolkit этими двумя вещами не заканчивается.

IT>> На самом деле, когда начинался делаться BLToolkit, точнее тогда ещё RFD, в 2002 году, то никаких подобных вещей, даже портов с джавы ещё не было. Это уже потом всякие ORM начали расти как грибы.

C>В 2002 году надо было на Java писать — там уже были и ORM (Hibernate 1.2) и iBatis

На Java писать мне тогда релиния не позволяла.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[26]: ORM vs Linq and BLToolkit :)
От: Merle Австрия http://rsdn.ru
Дата: 27.03.06 09:36
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Да похоже на то, что плохо занимались.

Поверь, не плохо...

GZ> Проблемы ясны, опубликованы, и много раз обговорены.

Это не проблемы, это как верно заметил Игорь, следствия...

GZ> Может поэтому мне больше нравятся теоретики, которые мыслят более полными понятиями и категориями, невзирая на существование или несуществование таких понятий в реальности.

Вот в данном случае, как раз он мыслит более глобально, поскольку указывает на первопричину, а не зацикливается на частностях...

GZ> Или сознательно принижать(или не упоминать) в рекламных целях(а он как ты заметил теперь работает в Microsoft) функциональность современных серьезных ORM систем.

Свое мнение ом ORM он высазывал задолго до того как перешел в MS, и он вообщем-то в своем мнении не одинок.

GZ> поэтому я предположил что г-н Clemens Vasters просто не в теме современных ORM систем.



GZ>Есть задачи которым не подходит ORM. Это то в чем я абсолютно согласен и могу подписаться под любым документом.

Ну вот и договорились..

GZ> Но то, что написал г-н Clemens Vasters не выдерживает критики.

А где критика? Я не увидел в этом топике ни слова критики аргументации гн-а. Вастерса... Ты почему-то какие-то куски из текста выдираешь, делаешь свои выводы и с ними споришь...

GZ>Собственно ты сам мне не возразил ни по одному пункту в предыдущем посте. Интересно почему?

Ну вот потому и не возразил, какой смысл спорить с догадками?...

GZ>Итак, ты никак конструктивно не возразил моей критике,

Как это не конструкивно? Помоему все очень конструктивно...

GZ>давай-ка попробуй возразить следующим утверждениям.

Зачем? То есть мне даже есть что возразить, просто сейчас нет ни времени, ни желания.. Может позже.

GZ>Да ничему он тебя не обязывает.

Увы, обязывает...

GZ>Янус держит много баз данных(а не эту поделку).

Правда? Он держит джет и почти держит сиквел, но только у энтузиастов... Мы вот позавчера с АВК, пока в лондон летели, как раз обсуждали, что надо бы янусе забить на все БД, и написать свой однопользовательский движек для хранения сообщений, потому как достал уже этот зоопарк.

M>>манипуляции кластерными индексами, которым в оракле адекватной замены нет,

GZ>Это еще почему?
Потому что нету.

GZ> Поклеп. Там все мощнее.

Хре... Фигушки.

GZ> Ты можешь держать таблицу отсортированной по любому индексу а не только по primary.

Кто тебе сказал, что в сиквеле можно держать таблицу отсортированную только по Primary? Вот это точно поклеп, более того в сиквеле создавать кластерный индекс по Primary — не рекомендуется. А вот в Оракле ты обязан делать Index Organized Table только по уникальному полю.

GZ> Перевести?

"Не смотря та то что платформы сильно развились за последние семь лет, фундаментальные задачи стоящие перед прозрачными (полностью абстрактными) мапперами данных на объекты, остаются в сущности теми же самыми." (далее идет перечисление проблем стоящих перед ORM, то есть тех проблем, которые ORM должен решать).
Вообще, вчера Клеменс сказал нам, что с очень хорошей вероятностью он в ближайшее время приедет в москву, во время WCF-тура, вот можешь сам у него и спросить.

M>>Не надоело?

GZ>Уже да.
Ну вот и замечательно.
... [RSDN@Home 1.2.0 alpha rev. 619]
Мы уже победили, просто это еще не так заметно...
Re[18]: ORM vs Linq and BLToolkit :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.03.06 13:46
Оценка:
Здравствуйте, GlebZ, Вы писали:

AVK>>Какое отношение твой сценарий имеет к сопряганию linq и bltoolkit?

GZ>Просто интересно выживаемость BLToolkit после выхода 3.0.

Нормально. Они пересекаются по функционалу не на 100 и даже не на 90%. Если же поддержка LINQ в BLT будет реализована, то вобще все будет прекрасно.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[19]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 27.03.06 13:57
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Нормально. Они пересекаются по функционалу не на 100 и даже не на 90%.

Они пересекаются с DLINQ+ LINQ. И притом, для BLToolkit пересечение 100%.
Re[30]: ORM vs Linq and BLToolkit :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.03.06 13:58
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Честно говоря — в принципе DataAccess+Mapper это и есть ORMapper. В принципе любой DAL слой имеющий на выходе entities или полноценные объекты с поведением сами догружаются — являются ORM.


Вот только в BLToolkit ничего само не догружается.

GZ>В третьих, я начинаю понимать что вы имели ввиду. ORM бывают двух типов. Один тип, это когда на выходе у тебя полноценный объект с полноценным поведением, второй тип — это когда на выходе entities(не могу подобрать правильный термин) который в свою очередь также является типизированнам классом. В любом случае они являются ORM поскольку занимаются тем, что являются некоторой прокладкой для прозрачного получения типизированных объектов из реляционной модели. Hibernate — имеет тенденции первого класса, BLToolkit и DLink — это тенденции второго класса.


Нет в DLInQ никаких entities. Результатом последней операции (не считая группировок и вложенных запросов это проекция) являются анолнимные типы, конструируемые под конкретную операцию проекции.
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[20]: ORM vs Linq and BLToolkit :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.03.06 14:07
Оценка:
Здравствуйте, GlebZ, Вы писали:

AVK>>Нормально. Они пересекаются по функционалу не на 100 и даже не на 90%.

GZ>Они пересекаются с DLINQ+ LINQ

С LINQ BLToolkit вобще не пересекается, а касательно DLINQ — как раз к нему и относилась моя предыдущая фраза.

GZ>. И притом, для BLToolkit пересечение 100%.


Могу лишь предположить что ты плохо знаешь либо одно, либо другое, либо оба сразу. Это чтобы не предположить что то более обидное
... << RSDN@Home 1.2.0 alpha rev. 619>>
AVK Blog
Re[31]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 27.03.06 14:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

GZ>>Честно говоря — в принципе DataAccess+Mapper это и есть ORMapper. В принципе любой DAL слой имеющий на выходе entities или полноценные объекты с поведением сами догружаются — являются ORM.


AVK>Вот только в BLToolkit ничего само не догружается.

Значит это больше похоже на тип 1(entities).

AVK>Нет в DLInQ никаких entities. Результатом последней операции (не считая группировок и вложенных запросов это проекция) являются анолнимные типы, конструируемые под конкретную операцию проекции.

Эээ нет. Может я немного устарел, и размышляю на основе DLinq который выходил к PDC, но именно проекция там, это совершенно отдельная операция. И если воспользоваться проекцией, то этот объект уже не отслеживается Lifetime Tracking и не апдейтится(хотя возможно он может быть сохранен через интеграцию store procedure, не знаю). Это очень похоже на ситуацию с вьюхами. После выборки, нельзя сохранить измененный результат(если не брать в рассчет INSTEAD OF). В случае если возвращать неизмененный объект, то его можно автоматизированно сохранять.
Что касается entities, то насколько я помню, они сами себя так позиционировали. Ты их в этом будешь обвинять?
Re[21]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 27.03.06 14:47
Оценка:
Здравствуйте, AndrewVK, Вы писали:

GZ>>. И притом, для BLToolkit пересечение 100%.


AVK>Могу лишь предположить что ты плохо знаешь либо одно, либо другое, либо оба сразу. Это чтобы не предположить что то более обидное

Ближе к телу как говорил Мопасан. Где именно DLink не поддерживает такую же функциональность BLToolkit?
Re[22]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 28.03.06 06:19
Оценка:
Здравствуйте, GlebZ, Вы писали:

AVK>>Могу лишь предположить что ты плохо знаешь либо одно, либо другое, либо оба сразу. Это чтобы не предположить что то более обидное

GZ>Ближе к телу как говорил Мопасан. Где именно DLink не поддерживает такую же функциональность BLToolkit?

Validation, ObjectBinder, абстрактный DataAccessor, Emit с человеческим лицом, TypeAccessor (кстати, как насчёт скорости у DLink?), всякие имплы, EditableObjects, на подходе аспекты, расширяемый атрибутами TypeBuilder.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[23]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 28.03.06 08:38
Оценка:
Здравствуйте, IT, Вы писали:

Специально себе нашел документуху на DLink от PDC.
IT>Validation,
Легко, через см аттрибуты UpdateMethodAttribute, InsertMethodAttributeб DeleteMethodAttribute. Правда сейчас нет твоих сырцов посмотреть что это такое, но в принципе — это не проблема DAL слоя. Это в большей степени проблема бизнес логики.
IT>ObjectBinder,
На фиг? Стандартный List он и в Африке стандартный List. Объекты внутри типизированные. Хотя у низ во фьючах стоит что будут делать еще DataBinding(у меня версия от PDC).
IT>абстрактный DataAccessor,
Другая система. Он в подобном DataAccesor не нуждается. Там есть DataContext, все можно через него + Standart Query Language.
IT>Emit с человеческим лицом,
Это к делу не относится.
IT>TypeAccessor (кстати, как насчёт скорости у DLink?),
Не нужен. В компилятор вделали анонимные типы(что позволено им, не позволено нам). С ними можно работать без дополнительных Accessor'ов. Типа:
var q =
    from c in Customers
    where c.City == "London"
    select c;
foreach (var cust in q)
    Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);


IT>всякие имплы, EditableObjects,

Поясни что это такое.
IT>на подходе аспекты, расширяемый атрибутами TypeBuilder.
А вот это особенно интересно. Поясни. Видел код но еще не разбирался что за фенька.
Re[24]: ORM vs Linq and BLToolkit :)
От: IT Россия linq2db.com
Дата: 28.03.06 13:13
Оценка:
Здравствуйте, GlebZ, Вы писали:

IT>>Validation,

GZ>но в принципе — это не проблема DAL слоя. Это в большей степени проблема бизнес логики.

Совершенно верно. Это не проблема DAL слоя. Тем не менее что можно ответить на твой вопрос?

Где именно DLink не поддерживает такую же функциональность BLToolkit?


IT>>ObjectBinder,

GZ>На фиг? Стандартный List он и в Африке стандартный List.

Стандартный не пойдёт, нужен как минимум ITypedList для WinForms. Во втором фреймворке MS кое что сделала, так что можно условно (очень условно) сказать, что кое что есть. Для WebForms примерно также. Баиндинг как бы есть, но кастрированный и через рефлекшин.

GZ> Объекты внутри типизированные. Хотя у низ во фьючах стоит что будут делать еще DataBinding(у меня версия от PDC).


Интересно будет глянуть.

IT>>абстрактный DataAccessor,

GZ>Другая система. Он в подобном DataAccesor не нуждается. Там есть DataContext, все можно через него + Standart Query Language.

Что можно через него? Можно ограничится одним описанием метода и он будет ассоциирован с сохранённой процедурой?

IT>>Emit с человеческим лицом,

GZ>Это к делу не относится.

См. п. 1.

IT>>TypeAccessor (кстати, как насчёт скорости у DLink?),

GZ>Не нужен. В компилятор вделали анонимные типы(что позволено им, не позволено нам). С ними можно работать без дополнительных Accessor'ов. Типа:

А что ты будешь дальше с ними делать? Как баиндить на формы, как использовать в своей бизнес логике?

IT>>всякие имплы, EditableObjects,

GZ>Поясни что это такое.

Объекты, у которых есть методы вроде AcceptChanges, Rejecthanges, флаг IsDirty и пр.

IT>>на подходе аспекты, расширяемый атрибутами TypeBuilder.

GZ>А вот это особенно интересно. Поясни. Видел код но еще не разбирался что за фенька.

Речь о догенерировании виртуальных методов. Кто-то тут приводил аналогичную штуку в яве.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[25]: ORM vs Linq and BLToolkit :)
От: GlebZ Россия  
Дата: 28.03.06 13:47
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>Validation,

GZ>>но в принципе — это не проблема DAL слоя. Это в большей степени проблема бизнес логики.

IT>Совершенно верно. Это не проблема DAL слоя. Тем не менее что можно ответить на твой вопрос?


IT>

IT>Где именно DLink не поддерживает такую же функциональность BLToolkit?


Но в принципе она легко реализуемая через DataContext(о чем я и говорил до этого и показано в параграфе про процедуры).

GZ>> Объекты внутри типизированные. Хотя у низ во фьючах стоит что будут делать еще DataBinding(у меня версия от PDC).

IT>Интересно будет глянуть.
Мне интересно будет глянуть, там у них во фьючах объявлена лучшая поддержка Multi-tier Applications and Web Services. Что они под этим подразумевают.


IT>>>абстрактный DataAccessor,

GZ>>Другая система. Он в подобном DataAccesor не нужда ется. Там есть DataContext, все можно через него + Standart Query Language.
IT>Что можно через него? Можно ограничится одним описанием метода и он будет ассоциирован с сохранённой процедурой?
И так, и так. По маппингу может генерить сам команды, или можно сделать так:

public partial class Northwind : DataContext
{
    ...
    [UpdateMethod]
    public void OnProductUpdate(Product original, Product current) {
        // Execute the stored procedure for UnitsInStock update
        if (original.UnitsInStock != current.UnitsInStock) {
            int rowCount = this.ExecuteCommand(
                "exec UpdateProductStock " +
                "@id={0}, @originalUnits={1}, @decrement={2}",
                original.ProductID,
                original.UnitsInStock,
                (original.UnitsInStock - current.UnitsInStock)
            );
            if (rowCount < 1)
                throw new OptimisticConcurrencyException();
        }
        ...
    }
}



IT>>>Emit с человеческим лицом,

GZ>>Это к делу не относится.
IT>См. п. 1.
См. параграф про анонимные типы и local type inference ниже.

IT>А что ты будешь дальше с ними делать? Как баиндить на формы, как использовать в своей бизнес логике?

Это некоторый промежуточный вариант(до нормального type inference ему далеко). Можно сделать и так:
var q =
    from c in db.Customers
    where c.City == "London"
    select c;
// Execute once using ToList() or ToArray()
var list = q.ToList();
foreach (Customer c in list)
    Console.WriteLine(c.CompanyName);

Можно вообще использовать Projection:
var q =
    from c in db.Customers
    where c.City == “London”
    select new MyType(c.ContactName, c.Phone) into x
    orderby x.Name
    select x;

Но в этом случае весь update только вручную.


IT>>>всякие имплы, EditableObjects,

GZ>>Поясни что это такое.
IT>Объекты, у которых есть методы вроде AcceptChanges, Rejecthanges, флаг IsDirty и пр.
Есть в автоматическом режиме для Lifetime Tracking. Причем транзакционность может идти как по версиям, так и по состоянию. При Rollback он вместо убийства объектов будет подставлять старое дотранзакционное состояние. Такая шняга прекрасно подходит как для систем с stateless, так и statefull.

IT>Речь о догенерировании виртуальных методов. Кто-то тут приводил аналогичную штуку в яве.



Существует несколько вопросов по генерации запросов, но как-то озвучивать их пока я не могу.(придет RSDN 5, там вроде новая версия, надо будет поюзать, только тогда можно будет хоть что-то сказать)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.