Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор ADO.NET / 20 сообщений из 20, страница 1 из 1
26.12.2012, 09:26
    #38092885
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Используйте ли вы сабж для создания адаптеров?
Плюсы и минусы которые вы видите в использовании конструктора или проще просто создавать соединение и делать запросы прямо через них?
...
Рейтинг: 0 / 0
26.12.2012, 09:31
    #38092893
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Roman MejtesКонструктор ADO.NET
Шо за зверь?
...
Рейтинг: 0 / 0
26.12.2012, 09:34
    #38092897
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
МСУ, ну типа генератор кода "набора данных" с подключением к базе данных.
...
Рейтинг: 0 / 0
26.12.2012, 09:39
    #38092901
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Человеческим языком можно? Типизированный датасет, ORM, T4, ... О чем речь?
...
Рейтинг: 0 / 0
26.12.2012, 09:48
    #38092911
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
МСУ,

DataSet
...
Рейтинг: 0 / 0
26.12.2012, 09:59
    #38092927
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Roman MejtesМСУ, DataSet
Какой датасет? Их минимум два. Из тебя нужно щипцами вытягивать информацию или-таки научишься нормально задавать вопросы?

P.S. Типизированные датасеты лежат давно на свалке, не ходи туда. Что использовать? ORM.
...
Рейтинг: 0 / 0
26.12.2012, 16:04
    #38093692
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Походу напугал я парня... :(

P.S. Роман, давай сначала - что хочешь в результате узнать, плохо или хорошо юзать конструктор дизайнер в типизированных датасетах?
...
Рейтинг: 0 / 0
26.12.2012, 16:54
    #38093810
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Roman MejtesПлюсы и минусы которые вы видите в использовании конструктора или проще просто создавать соединение и делать запросы прямо через них?
Если хочется совсем по простому - то Dapper или PetaPoco .
PS. DataSet на свалку, согласен.
P.P.S. Самописки в общем-то тоже.
...
Рейтинг: 0 / 0
26.12.2012, 17:06
    #38093830
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Шикарно

Sorry, but something went wrongError: 500 - Internal server error
Accessing: http://www.toptensoftware.com/petapoco/
...
Рейтинг: 0 / 0
26.12.2012, 17:41
    #38093891
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
SolYUtorurl=http://www.toptensoftware.com/petapoco/]PetaPoco.
странно сделано
Код: c#
1.
2.
3.
var a=db.SingleOrDefault<article>("SELECT * FROM articles WHERE article_id=@0", 123);
db.Update("articles", "article_id", a);
//db.Update(a); так то было бы логичнее
...
Рейтинг: 0 / 0
26.12.2012, 18:10
    #38093936
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Ещё ORM
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static class SuperOrm
{
    public static IEnumerable<T> ExecuteReader<T>(this DbCommand command, Func<DbDataReader, T> mapper)
    {
        using (var reader = command.ExecuteReader())
            while(reader.Read())
                yield return mapper(reader);
    }
}
...
Рейтинг: 0 / 0
26.12.2012, 18:18
    #38093947
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Алексей К,

разбудил в себе тролля? Чтобы называть ORM'ом, надо иметь реализацию mapper, а не вешать эту нудную обязанность на клиента.
...
Рейтинг: 0 / 0
26.12.2012, 18:38
    #38093970
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
SolYUtorразбудил в себе тролля?Я кого-то на что-то провоцирую? Нет. Почему тогда я троль? Непонятно... Если кто-то по поводу и без повода тянет в проекты диконтейнеры и не может найти этому оправдания - я не виноват. :-)
SolYUtorЧтобы называть ORM'ом, надо иметь реализацию mapper, а не вешать эту нудную обязанность на клиента.
авторORM (англ. Object-relational mapping, рус. Объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как проприетарные, так и свободные реализации этой технологии.Где здесь написано, что мэппер обязательно должен быть в составе ORM? Какой закон запрещает ему быть в прикладном коде?

А если в проекте совсем немного запросов к БД, зачем в проект тянуть полноценный ORM, если можно обойтись элементарной наколенкой? Это к вопросу о "самописки на свалку".
...
Рейтинг: 0 / 0
26.12.2012, 18:39
    #38093974
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
вдогонку: кодогенерацию никто не отменял.
...
Рейтинг: 0 / 0
26.12.2012, 18:57
    #38093999
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
МСУШикарно

Sorry, but something went wrongError: 500 - Internal server error
Accessing: http://www.toptensoftware.com/petapoco/ Да там и смотреть особо не на что.
...
Рейтинг: 0 / 0
26.12.2012, 21:18
    #38094136
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Алексей КЕщё ORM
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static class SuperOrm
{
    public static IEnumerable<T> ExecuteReader<T>(this DbCommand command, Func<DbDataReader, T> mapper)
    {
        using (var reader = command.ExecuteReader())
            while(reader.Read())
                yield return mapper(reader);
    }
}
...
Рейтинг: 0 / 0
27.12.2012, 08:44
    #38094406
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
МСУ,

извините, что не ответил, просто с работы уже утопал :) погуглил про ORM, почитал в педевикии, думаю вещь классная, но в данный момент проект уже сделан на DataSet'ах и переделывать времени нет.

интересовал вопрос, стоит ли использовать вообще этот конструктор DataSet или лучше создавать Connection и загружать данные в обычный Dataset класс, без всяких конструкторов и генерации.
То есть, что бы прочитать данные из базы данных я вижу 2 варианта: создать Dataset подключить к нему БД, создать в конструкторе адаптер, указать в нем все запросы и поля.
Затем просто в программе создаем объект класса этого адаптера типа

Код: c#
1.
2.
3.
MyTableAdapter var = new MyTableAdapter()
foreach (MyTableRow i in var.GetData())
{...}



или просто сделать всё самому без всяких заморочек:

Код: c#
1.
2.
3.
4.
SqlDataAdapter adapter = new SqlDataAdapter("Select * From tblRules", "Data Source=<сервер>;Initial Catalog=software;Persist Security Info=True;User ID=<логин>;Password=<пароль>");
DataTable table = new DataTable();
adapter.Fill(table);
MessageBox.Show(table.Rows[0].ItemArray[1].ToString());



из моих личных наблюдений: конструктор удобнее тем, что генерируются 2 класса, Table и Row с которыми приятно работать, они возвращают не "какие" то наборы данных в виде массивов и списков, а конкретные классы с полями из моей таблицы. Но при этом приходится генерировать целую тучу Адаптеров, так как 1 адаптер не позволяет к примеру вернуть данные с разным набором полей. Когда количество этих адаптеров большой они тупо все перемешиваются.
полученные данные в Table потом мне еще приходится переносить в собственные классы, получается 2 работа.

2 вариант, удобнее тем, что я могу в любой момент обратиться к любой базе, любой таблицы и мне не нужно ни чего генерировать при этом, руки свободны и развязаны. Данные можно загружать сразу в свой класс, и т.д.

может я малость глупо объясняю :) я не гуру программирования, но что же лучше выбрать из 2 этих вариантов
...
Рейтинг: 0 / 0
27.12.2012, 08:57
    #38094411
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Короче понятно, используй типизированный DataSet, ковыряйся в нем в дизайнере и не парся.
автор...Но при этом приходится генерировать целую тучу Адаптеров, так как 1 адаптер не позволяет к примеру вернуть данные с разным набором полей...ну дык верни все поля в одном адаптере.

Что за изврат
авторMyTableAdapter var = new MyTableAdapter()
foreach (MyTableRow i in var.GetData())
{...}
а что
Код: c#
1.
2.
MyTableAdapter var = new MyTableAdapter();
var.Fill(ds.MyTable) 

религия не позволяет использовать.
У DataTable есть Select и можно выбирать нужные строки и тд и тп
Тебе надо сначало литературу почитать по ADO.NET шоб понимать что к чему.
Для начала DataSet - это такая мини база дынных в памяти твоего компутера.
...
Рейтинг: 0 / 0
27.12.2012, 09:04
    #38094419
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
fortibransa,

а как мне смысл использовать метод .Fill на MyTable, если потом мне всё равно надо будет перебрать в MyTable все строки?
по этому я сразу вызываю метод GetData() и прохожусь по нему циклом...

вашу мысль я примерно уловил, вы предлагаете для нужных мне данных создать соответствующие DataSet'ы, загрузить в них методом Fill данные из Адаптера, а потом на протяжении всей работы программы использовать. И по сути не так уж и важно, каким методом это будет сделано. Я правильно понял?
...
Рейтинг: 0 / 0
27.12.2012, 13:44
    #38094844
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конструктор ADO.NET
Вы все путаете. Fill Вы из БД занесли все данные удовлет. условию адаптера (SELECT * FROM блабла WHERE ля-ля), потом конечно если вам все строки нужны вы их перебираете или Select используйте и тд и тп.
Вы в любом случае "затаскиваете" данные к себе на комп. и если вы без условия в SELECT цепанете большую таблицу то будете курить пока затащится.

Посмотрите у вашего Датасета кодв в Desinger.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
//например вот
        public virtual DataSet1.MainTest_numbersDataTable GetDataByID(int MainTestsID) {
            this.Adapter.SelectCommand = this.CommandCollection[0];
            this.Adapter.SelectCommand.Parameters[0].Value = ((int)(MainTestsID));
            DataSet1.MainTest_numbersDataTable dataTable = new DataSet1.MainTest_numbersDataTable();
            this.Adapter.Fill(dataTable);
            return dataTable;
        }


И нужные вам ДатаСеты можно во множественном числе и не создавать, а создать один с кучей таблиц адаптеров и пр. и методов Fill ту Вас может быть куча (конечно с разными названиями, типа FillByID и тд).
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор ADO.NET / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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