|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
Добрый день. попытался задать вопрос на соседней ветке . Но понял что ошибся форумом, поэтому пишу сюда. Visual Studio 2010, C#, .Net Framework 4.0, WPF, MVVM, Firebird 2.5 до сих пор для доступа к базе использовали ORM Telerik Open Access. Сейчас возникла задача посмотреть.. пока просто посмотреть и проанализировать другие способы доступа к базе. Т.к. этот анализ делался (если вообще делался) другими людьми, которые уже не работают в компании. Выбор Telerik так же был сделан ними. Я выделил два основных подхода для работы с Firebird базой под .NET: 1. Entity Framework 2. Ole DB Provider У подхода 1. Entity Framework есть множество решений (Telerik Open Access, Microsoft EF и т.д.). Основное преимущество - это привязка классов модели к структуре базы. Может что-то еще? Если EF так хорош для .NET - почему существует альтернатива в виде Ole DB ? или вот еще - вполне удобное решение , используя Firebird .Net Provider Какой вариант все же самый оптимальный и почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 10:40 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., я так понимаю, что Вы не имеете представления о том, что такое ADO.NET ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 14:39 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_.или вот еще - вполне удобное решение , используя Firebird .Net ProviderА Telerik OpenAccess ORM и EF разве не через него работают (хотя скорее всего с тем, что в конфиге в DbProvidersFactory пропишешь)? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 15:00 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
skyANA_andrews_.или вот еще - вполне удобное решение , используя Firebird .Net ProviderА Telerik OpenAccess ORM и EF разве не через него работают (хотя скорее всего с тем, что в конфиге в DbProvidersFactory пропишешь)? да. для работы с Telerik Open Access нужно подключить к проекту эту dll. Но я имел ввиду что есть вариант без использования mapping, а просто через прямые запросы получать доступ к данным: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 15:49 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., у Вас же MVVM. Значит mapping всё равно будет. Вопрос только в том, сами его напишите, или воспользуетесь ORM. Почему бы Вам не переписать проблемные места без использования ORM? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2013, 17:49 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., ... ODBC вы принципиально исключаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 14:23 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
skyANA_andrews_., у Вас же MVVM. Значит mapping всё равно будет. что вы имете ввиду? "Mapping", который на самом деле - биндинг между View-ViewModel? ну так это ж разные вещи. Слой "данных" здесь не используется. а между ViewModel-Model mapping'а может и не быть. Я могу явно обращаться к табличкам через Код: c# 1.
skyANAПочему бы Вам не переписать проблемные места без использования ORM? что вы подразумеваете под проблемными местами? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 15:56 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_.skyANA_andrews_., у Вас же MVVM. Значит mapping всё равно будет. что вы имете ввиду? "Mapping", который на самом деле - биндинг между View-ViewModel? ну так это ж разные вещи. Слой "данных" здесь не используется. а между ViewModel-Model mapping'а может и не быть. Я могу явно обращаться к табличкам через Код: c# 1.
Я вообще-то об object-relational mapping. Что у Вас является Model? DataSet что-ли? _andrews_.skyANAПочему бы Вам не переписать проблемные места без использования ORM? что вы подразумеваете под проблемными местами?Те, что тормозят (не оптимальны). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 21:37 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., Я думаю потому, что исторически сперва появилось ADO.NET. Потом уже подтянулись LINQ и прочии ORMы. А что оптимальнее - вопрос почти не разрешимый. Ответ для каждого свой. Тут и внешние условия играют роль (я например вынужден писать в рамках NET 2), и личные предпочтения (я например страстно не навижу кодогенераторы). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 06:27 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
BarkanЯ думаю потому, что исторически сперва появилось ADO.NET. Потом уже подтянулись LINQ и прочии ORMы.ИМХО технология ORM старше, чем .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 11:00 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
BarkanА что оптимальнее - вопрос почти не разрешимый. Ответ для каждого свой. Хорошо. В каких случаях уместно использовать ORM и mapping, а в каких Ole DB и явные sql-запросы: Код: sql 1.
Для такого приложения _andrews_.Visual Studio 2010, C#, .Net Framework 4.0, WPF, MVVM, Firebird 2.5 что было бы оптимально и почему? Чисто субъективное мнение. На эти технологии (MS Entity Framework, Telerik OpenAcces, NHibernate) написано сотни страниц документации. И нужно их изучать с нуля, вместо того чтобы пользовать уже существующими знаниями в области разработки БД посредством sql-запросов и скриптов. Вот я пока не вижу огромного преимущества этих технологий. Да, автоматическая генерация классов или таблиц штука веселая. Но что мешает вручную написать класс или нарисовать таблицу? Что называется "по старинке". Чтобы добавить индекс для поля - нужно снова таки листать документацию и заново изучать как это делается. Чтобы добавить хранимую процедуру - тоже самое. Как я уже сказал - мы на сегодняшний день используем Telerik ORM OpenAccess. Но эта технология была выбрана не мной. И я не вижу проблем, если бы мы сейчас писали запросы вручную Код: sql 1.
, а не через linq Я сейчас бы хотел для самого себя определить - какие преимущества данного подхода (ORM)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 16:16 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., авторНо что мешает вручную написать класс или нарисовать таблицу? Что называется "по старинке". Естественно лень)) Лень писать CRUD операции. Лень писать маппинг. Лень (при необходимости переноса на другую СУБД) писать N-ое количество DAL. Лень переделывать CRUD операции при смене типа/удалении столбца. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:40 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
_andrews_., да никакого огромного преимущества ORM не даёт, а просто решает ряд определённых задач за Вас. В первую очередь - это Mapping . Потом к примеру Lazy Loading и Change Tracking . Посмотрите на фишки OpenAccess ORM , прочитайте к примеру эту статью: Выбор ORM-стратегии (.NET) . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 06:08 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
Привет. _andrews_.Я выделил два основных подхода для работы с Firebird базой под .NET: 1. Entity Framework 2. Ole DB Provider У подхода 1. Entity Framework есть множество решений (Telerik Open Access, Microsoft EF и т.д.). Основное преимущество - это привязка классов модели к структуре базы. Может что-то еще? Если EF так хорош для .NET - почему существует альтернатива в виде Ole DB ? OLEDB, в чистом виде, это низкоуровневый объектный API (на базе COM-интерфейсов) для доступа к базам данных. В .NET для него создана надстройка в виде OLEDB.NET объектов. Существует оно потому что появилось немного раньше EF и вообще .NET. И, в целом, живет своей отдельной жизнью :) ---- По поводу IBProvider-а и .NET. Ты не пробовал играть с специализированным ADO.NET провайдером для IBProvider-a? Конечно это штука пока находится в "начальной" стадии своего развития и насчет использования в реальных проектах, конечно, речь не идет. Но вся базовая инфраструктура (включая поддержку всех типов данных) для работы с базой через SQL уже присутствует. И 4.2 тонны тестов (только для этого .NET-провайдера), дают некоторые гарантии качества. Для IBProvider - тестов на три порядка больше :) Из забавных вещей (в плане SQL) могу отметить наличие автоматической генерации описаний параметров запросов. Ручное описание параметров также возможно :) Это я так, в качестве доп. информации, о способах работы с FB/IB из .NET :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 10:24 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
авторНо что мешает вручную написать класс или нарисовать таблицу? Что называется "по старинке". Лень писать большое количество одинакового кода, у меня в системе только справочников с количеством атрибутов до 10, несколько десятков. ORM дает возможность не колупаться в написании запросов - по сути одних и тех же а сразу приступить к более интересной части. Мало того при небольшом изменении - при написании в ручную придется опять переписывать много монотонного кода, (актуально на начальных этапах разработки системы - когда изменения часты) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 23:04 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
skyANABarkanЯ думаю потому, что исторически сперва появилось ADO.NET. Потом уже подтянулись LINQ и прочии ORMы.ИМХО технология ORM старше, чем .NET 97й год , однако (самое старое, что нашлось в википедии, пасабжу с 18.5.4) на носу был торжественный выход 98й венды, какой-такой .net? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 23:51 |
|
C# + Firebird. Какую технологию работы с базой использовать?
|
|||
---|---|---|---|
#18+
AntonariyskyANAпропущено... ИМХО технология ORM старше, чем .NET 97й год , однако (самое старое, что нашлось в википедии, пасабжу с 18.5.4) на носу был торжественный выход 98й венды, какой-такой .net? :) Эка Вас раззадорило то! Я имел в виду именно NET и его внутренности. ADO.NET появился сразу с первой версией NET. LINQ появился в третьей версии NET (если мне не изменяет склероз). EF появился в NET ещё позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2013, 05:53 |
|
|
start [/forum/topic.php?fid=17&fpage=26&tid=1350022]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 150ms |
0 / 0 |