powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C# + Firebird. Какую технологию работы с базой использовать?
18 сообщений из 18, страница 1 из 1
C# + Firebird. Какую технологию работы с базой использовать?
    #38254877
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. попытался задать вопрос на соседней ветке . Но понял что ошибся форумом, поэтому пишу сюда.

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

Какой вариант все же самый оптимальный и почему?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38255292
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_., я так понимаю, что Вы не имеете представления о том, что такое ADO.NET ?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38255309
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.или вот еще - вполне удобное решение , используя Firebird .Net ProviderА Telerik OpenAccess ORM и EF разве не через него работают (хотя скорее всего с тем, что в конфиге в DbProvidersFactory пропишешь)?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38255369
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
FbCommand SelectSQL = new FbCommand("SELECT * FROM BOOKS", fb); 
SelectSQL.Transaction = fbt;
FbDataReader reader = SelectSQL.ExecuteReader();
 
string select_result = ""; 
try
{
  while (reader.Read())
  {
    select_result = select_result + reader.GetInt32(0).ToString() + ", " + reader.GetString(1) + "\n";
  }
}
finally
{
  reader.Close();
  fb.Close();
}
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38255564
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_., у Вас же MVVM. Значит mapping всё равно будет. Вопрос только в том, сами его напишите, или воспользуетесь ORM.

Почему бы Вам не переписать проблемные места без использования ORM?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38256634
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.,

... ODBC вы принципиально исключаете?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38256818
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA_andrews_., у Вас же MVVM. Значит mapping всё равно будет.

что вы имете ввиду? "Mapping", который на самом деле - биндинг между View-ViewModel?
ну так это ж разные вещи. Слой "данных" здесь не используется.
а между ViewModel-Model mapping'а может и не быть. Я могу явно обращаться к табличкам через

Код: c#
1.
FbCommand SelectSQL = new FbCommand("SELECT * FROM BOOKS", fb); 



skyANAПочему бы Вам не переписать проблемные места без использования ORM?
что вы подразумеваете под проблемными местами?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38257358
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.skyANA_andrews_., у Вас же MVVM. Значит mapping всё равно будет.

что вы имете ввиду? "Mapping", который на самом деле - биндинг между View-ViewModel?
ну так это ж разные вещи. Слой "данных" здесь не используется.
а между ViewModel-Model mapping'а может и не быть. Я могу явно обращаться к табличкам через

Код: c#
1.
FbCommand SelectSQL = new FbCommand("SELECT * FROM BOOKS", fb);

Я вообще-то об object-relational mapping.
Что у Вас является Model? DataSet что-ли?

_andrews_.skyANAПочему бы Вам не переписать проблемные места без использования ORM?
что вы подразумеваете под проблемными местами?Те, что тормозят (не оптимальны).
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38257526
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.,

Я думаю потому, что исторически сперва появилось ADO.NET.
Потом уже подтянулись LINQ и прочии ORMы.

А что оптимальнее - вопрос почти не разрешимый.
Ответ для каждого свой.
Тут и внешние условия играют роль (я например вынужден писать в рамках NET 2),
и личные предпочтения (я например страстно не навижу кодогенераторы).
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38257760
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarkanЯ думаю потому, что исторически сперва появилось ADO.NET.
Потом уже подтянулись LINQ и прочии ORMы.ИМХО технология ORM старше, чем .NET
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38260581
_andrews_.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarkanА что оптимальнее - вопрос почти не разрешимый.
Ответ для каждого свой.

Хорошо. В каких случаях уместно использовать ORM и mapping, а в каких Ole DB и явные sql-запросы:
Код: sql
1.
FbCommand SelectSQL = new FbCommand("SELECT * FROM BOOKS", fb); 



Для такого приложения
_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.
FbCommand SelectSQL = new FbCommand("SELECT * FROM BOOKS", fb); 

, а не через linq

Я сейчас бы хотел для самого себя определить - какие преимущества данного подхода (ORM)?
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38261132
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_.,

авторНо что мешает вручную написать класс или нарисовать таблицу? Что называется "по старинке".

Естественно лень)) Лень писать CRUD операции. Лень писать маппинг. Лень (при необходимости переноса на другую СУБД) писать N-ое количество DAL. Лень переделывать CRUD операции при смене типа/удалении столбца.
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38261248
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_andrews_., да никакого огромного преимущества ORM не даёт, а просто решает ряд определённых задач за Вас.

В первую очередь - это Mapping . Потом к примеру Lazy Loading и Change Tracking .
Посмотрите на фишки OpenAccess ORM , прочитайте к примеру эту статью: Выбор ORM-стратегии (.NET) .
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38261457
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
_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 :)
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38262846
evgen12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНо что мешает вручную написать класс или нарисовать таблицу? Что называется "по старинке".

Лень писать большое количество одинакового кода, у меня в системе только справочников с количеством атрибутов до 10, несколько десятков. ORM дает возможность не колупаться в написании запросов - по сути одних и тех же а сразу приступить к более интересной части. Мало того при небольшом изменении - при написании в ручную придется опять переписывать много монотонного кода, (актуально на начальных этапах разработки системы - когда изменения часты)
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38262895
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANABarkanЯ думаю потому, что исторически сперва появилось ADO.NET.
Потом уже подтянулись LINQ и прочии ORMы.ИМХО технология ORM старше, чем .NET 97й год , однако (самое старое, что нашлось в википедии, пасабжу с 18.5.4)
на носу был торжественный выход 98й венды, какой-такой .net? :)
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38263939
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...
ИМХО технология ORM старше, чем .NET 97й год , однако (самое старое, что нашлось в википедии, пасабжу с 18.5.4)
на носу был торжественный выход 98й венды, какой-такой .net? :)
Эка Вас раззадорило то!
Я имел в виду именно NET и его внутренности.
ADO.NET появился сразу с первой версией NET.
LINQ появился в третьей версии NET (если мне не изменяет склероз).
EF появился в NET ещё позже.
...
Рейтинг: 0 / 0
C# + Firebird. Какую технологию работы с базой использовать?
    #38263943
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, кэп :) Было бы по-настоящему подозрительно, если бы ADO.NET появилось раньше .NET :))
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C# + Firebird. Какую технологию работы с базой использовать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]