powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прелести c#
25 сообщений из 37, страница 1 из 2
Прелести c#
    #38000528
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозревая закидывание меня чем нибудь тяжелым, не смог все-таки удержаться и не создать тему. Если это возможно, прошу понять то, что я хотел донести и узнать. Писал на Delphi под БД. Несколько раз, судьба пыталась меня свести с Visual Studio и C# в частности. Проект создан и работает, но почему так все сложно у Вас? В целом разобрался, но родилось несколько все равно вопросов
1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект? Т.е. создавать его в какой-нибудь приватной процедуре (или методе вызова события чего-либо) что-то сделать и разорвать. Переубедите пожалуйста, я тут совсем не понял прикола. У меня некоторые программы конектятся к удаленым серверам и время на конект может занимать определенные время.. если на каждый чих будет попытка соединения это просто жесть какая-то. Еще, есть такое понятие как лицензии и сессии, как в таком случае отсекать сие и следить за этим? Т.е. правило - кто первый встал , того и тапки, ни кто не отменял... а тут типа вроде и запустил прогу (надел тапки) но не факт, что твой следующий запрос к базе будет успешным... новый коннект , а ты уже оказывается устарел и лицухи тебе не хватило..
2. Почему так все сложно с с# казалось -бы уже c обычными вещами, как все то-же соединение и работа с БД? В Delphi, кинул компонент коннекта, компонент Query и DataSource... всё!!!!!!!!!!!!! Тут какие-то танцы с бубном. Есть разница, Query1.FieldByName("id").AsInteger или (datasourceRole.Current as DataRowView).Row["id"].ToString() ? и то еще пока в стринговой а не интежеровской айдишник получил... И это то, что еще в Delphi я просто кинул на форму Query, а с версии 2008 VisualStudio ваще не нашел компонент аналогичных ...... Накидывается тьма хрени всякой, потом что-то правится даже, типа , о чудо , можно и запрос создать... Я пришел к выводу, что в рил-тайме я лучше создам и хоть контроль какой-то возымею и смогу даже запрос впихнуть.
3. Все работает, насоздавал всяких классов для более или менее адекватной работы с БД... Кидаю дэвэекспресовский грид на форму... опять засада.. отрисовка несколько секунд... Повторный запуск формы, все ок.. Почему первый раз так долго? Такое впечатление, что подгрузка с харда сначала а потом с ОЗУ работает... Исполняемый не растет.. Это обрадовало но не надолго.. лучшем вырос чем такая лажа...
...
Рейтинг: 0 / 0
Прелести c#
    #38000566
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

1. http://msdn.microsoft.com/ru-ru/library/8xx3tyca.aspx
2. Вы уверены, что Row["id"] не int? попробуйте преобразовать сразу к int.
...
Рейтинг: 0 / 0
Прелести c#
    #38000591
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

2. Я к тому, что в дэлфях я сразу говорил ToInteger, а тут и так строка длиная, а еще и приводить ее (Всё это делается.. вот такой я сволочью побуду, почему все не так просто :) )
...
Рейтинг: 0 / 0
Прелести c#
    #38000646
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

1. Как создать на весь проект один коннект это я скриейтил... я не понял почему во всех книжках советуют его рвать... наводит на мысли...
...
Рейтинг: 0 / 0
Прелести c#
    #38000702
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

1. При чем тут 1 коннект на весь проект? Вы про пул соединений прочитали? Когда вы вызываете Close(), соединение не закрывается, а помещается в пул, и может быть использовано повторно.
...
Рейтинг: 0 / 0
Прелести c#
    #38000890
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

Вот как, ок, не догнал, спс за инфу
...
Рейтинг: 0 / 0
Прелести c#
    #38001155
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdm,

Во-первых есть пул соединений, во-вторых никто не заставляет рвать соединение. Я допустим работаю "по старинке", как в Delphi - соединение открыто постоянно. Да и в общем-то работа в C# с БД ничуть не хуже чем в делфи. К слову я сам не так давно слез с делфи и возвращаться пока желания нет. Нужно просто почитать про ADO.NET и все сразу станет понятным.
Насчет девчачьего грида, то не знаю в чем у Вас проблема, у себя такого поведения за ним не замечал
...
Рейтинг: 0 / 0
Прелести c#
    #38001397
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thor234,

ok, может не повезло просто с девками(vs 2012) почитал я про ado.net иначе и рвануться толком и не удалось-бы. А скажи пожалуйста, чем лично тебя привлек с#? (надеюсь ни чего, что на ты?)
...
Рейтинг: 0 / 0
Прелести c#
    #38001427
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdmThor234,

ok, может не повезло просто с девками(vs 2012) почитал я про ado.net иначе и рвануться толком и не удалось-бы. А скажи пожалуйста, чем лично тебя привлек с#? (надеюсь ни чего, что на ты?)
Провакационный вопрос не хочу разводить холивар, как собственно и поливать какашками делфи, потому, что я люблю этот язык и любил на протяжении последних 10 лет, а он любил меня
Просто поработав пару недель на C# почему-то не захотелось запускать делфи, а сейчас меня увлекло изучение C#
...
Рейтинг: 0 / 0
Прелести c#
    #38001434
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть конечно некоторые вещи которые меня просто дико раздражают в ADO.NET, например №1 в моем топе это невозможность параллельных транзакций в FB net provider и вытекающей отсюда невозможности разделенных читающих и пишущих транзакций, за другие провайдеры не скажу ибо не пробовал. Но все решается допиливанием исходников провайдера, благо они в открытом доступе.
Плюс не особо нравится использование TableAdapter'ов, но обойтись можно и без них, решение получается более гибкое, но и менее быстрое в разработке, много "тынцев мышем".
...
Рейтинг: 0 / 0
Прелести c#
    #38001438
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос на сообразительность: что общего между C#, Delphi и Андерсом Хейлсбергом? :)
...
Рейтинг: 0 / 0
Прелести c#
    #38001447
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAВопрос на сообразительность: что общего между C#, Delphi и Андерсом Хейлсбергом? :)
Ответ знает любой школьник
...
Рейтинг: 0 / 0
Прелести c#
    #38001532
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит искать Delphi там, где его нет. Лично я перешел на с# после того, как увидел возможности, которых не было в Delphi.
Бизнес-объекты, а не адаптеры и прочие мелкие и неудобные подробности - это совсем другая история.
...
Рейтинг: 0 / 0
Прелести c#
    #38001568
Thor234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVaНе стоит искать Delphi там, где его нет. Лично я перешел на с# после того, как увидел возможности, которых не было в Delphi.
Бизнес-объекты, а не адаптеры и прочие мелкие и неудобные подробности - это совсем другая история.
Бизнес-объекты это конечно хорошо, даже и не спорю, но есть мелкие задачи для которых ОРМ это как с пушки по воробьям
...
Рейтинг: 0 / 0
Прелести c#
    #38001625
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в мыслях не было провокаций. Просто хотелось услышать не книжное, а личное мнение, что привлекло. А на счет литературы, что не попадалось, все в основном разжовывание одних и тех-же элементарных вещий и в основном под консоль. Посоветуйте литературку по ado.net с упором на windows приложения, где более конкретно описаны приемы передачи запросов, а не тупость обращения к одной таблице через tableadapter, работа с datagrid и другими контролами. на сколько понял до версии 2008, был аналогичный делфийскому компоненту query,зачем его убрали? Пишу с мобилы сейчас, потом брошу, как-я понял работу с бд на с, буду благодарен за ваши мнения и критику.
...
Рейтинг: 0 / 0
Прелести c#
    #38001664
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm2. Почему так все сложно с с# казалось -бы уже c обычными вещами, как все то-же соединение и работа с БД? В Delphi, кинул компонент коннекта, компонент Query и DataSource... всё!!!!!!!!!!!!! Тут какие-то танцы с бубном. Есть разница, Query1.FieldByName("id").AsInteger или (datasourceRole.Current as DataRowView).Row["id"].ToString() ? и то еще пока в стринговой а не интежеровской айдишник получил... И это то, что еще в Delphi я просто кинул на форму Query, а с версии 2008 VisualStudio ваще не нашел компонент аналогичных ...... Накидывается тьма хрени всякой, потом что-то правится даже, типа , о чудо , можно и запрос создать...Типичный пример покорёженного Delphi мышления. Не обижайся. :-)
kill_zdmЯ пришел к выводу, что в рил-тайме я лучше создам и хоть контроль какой-то возымею и смогу даже запрос впихнуть.Вывод правильный. Не нужно ничего "кидать на форму". Дизайнер форм предназначен не для работы с данными, а для компоновки контролов на форме. Тут автоматизация этого процесса достигается кодогенерацией. Посмотри T4 Text Template ради интереса. Так же кодогенерация присутствует в дизайнерах типизированного DataSet, EF, Linq2Sql и прочих.

зы: DataSet не самый удачный выбор для работы с данными.
...
Рейтинг: 0 / 0
Прелести c#
    #38001712
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
ни каких обид конечно. Может и искаженные понятия от дэлфи, но... Все-таки в дизайн-тайме, без нагромождений (как в делфи), как-то удобнее сразу законнектится, посмотреть результат в dbGrid, например, настроить поля и т.д.... В c#, пришел к выводу, что так виртуально представлю как будет выглядеть и какие поля иметь DataGridView и собственно добавил ему полей и настроил не видя еще результата. Как уже сказал выше, книжки как-то не цепанули, которые попались. Поэтому по наитию все :) Скажите, вот так я адекватно поступил?
Создал класс, назвал его Connect (База данных SQL Server, еще где-то надыбал класс работы с INI)
/// <summary>
/// Процедура соединения с БД
/// </summary>
public void ConnectDB()
{
IniFile ini = new IniFile(Application.StartupPath + "\\set.ini");
string
ServerDest = "Data Source=" + ini.IniReadValue("Назначение", "Сервер") + ";Initial Catalog=" + ini.IniReadValue("Назначение", "База данных") + ";Integrated Security=True";
dbDest = new SqlConnection(ServerDest);
dbDest.Open();
}
По сколько привычка обращаться не к позиции dbgrid-а, а все-таки к Query, как FieldByName("").Value (извините я еще не могу отделаться от дэлфевых аналогий, надеюсь Вы понимаете о чем я, пришел к выводу, что надо использовать BindingSource) В общем на скорую руку сделал такой метод (не судите строго, все еще на этапе познания :) )
/// <summary>
/// Процедура выборки или исполнения запросов
/// </summary>
/// <param name="sql">Передаваемый запрос</param>
public void ExecQuery(string sql)
{
ds = new BindingSource();
da = new SqlDataAdapter(sql, dbDest);
DataSet1 = new DataSet();
da.Fill(DataSet1);
ds.DataSource = DataSet1;
//ds.DataMember = DataSet1.Tables[0].TableName;

}
Передаю эту законнектенную переменную там дальше (про пулы вот позже на мысли Вы меня навели). В DataGridView добавил поле, назовем его Name и собственно выполняю запрос
private void FRoles_Load(object sender, EventArgs e)
{
datasourceRole = new BindingSource();
adapterRole = new SqlDataAdapter("select * from roles", dbRole.dbDest);
datasetRole = new DataSet();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = datasourceRole;
ShowRoles();
}
А про FieldByName это я к тому, что, например при удалении, определить айдшиник текущей позиции надо, что удалять будем...
(datasourceRole.Current as DataRowView).Row["id"].ToString()
в общем как-то так наколбасил, криткуйте
...
Рейтинг: 0 / 0
Прелести c#
    #38001936
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmВсе-таки в дизайн-тайме, без нагромождений (как в делфи), как-то удобнее сразу законнектится, посмотреть результат в dbGrid, например, настроить поля и т.д.... В c#, пришел к выводу, что так виртуально представлю как будет выглядеть и какие поля иметь DataGridView и собственно добавил ему полей и настроил не видя еще результата.Нет ничего невозможного. BindingSource позволяет получить метаданные объекта в дизайнтайме. Правда в DataGridView полно граблей с редактированием колонок в дизайнере... В общем, лучше писать под WPF. :-)

А в целом архитектура примерно такая. Мутится слой доступа к данным:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
static class ConnectionFactory
{
    public static DbConnection GetCollection()
    {
        var result = new SqlConnection(".....");
        result.Open();
        return result;
    }
}

class DataService
{
    public DataTable GetData(string parameter)
    {
        using (var connection = ConnectionFactory.GetCollection())
        {
            .....
            return .....;
        }
    }
}


Потом в форме пишется что-то вроде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class MyForm : Form
{
    DataService DataService = new DataService();

    void КнопкаОбновить_Click(object sender, EventArgs e)
    {
        bindingSource.DataSource = DataService.GetData(textBox.Text);
    }
}
...
Рейтинг: 0 / 0
Прелести c#
    #38002059
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект?
Это не рвать коннект, а высвобождать соединение. На случай, если у вас серверное приложение и очень много пользователей. Если простая двухзвенка, можете использовать одну коннекцию и никогда в процессе работы приложения не закрывать, опять же если все как обычно в делфи делается в одном ГУИ потоке.
...
Рейтинг: 0 / 0
Прелести c#
    #38002166
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Сейчас переварю...
По поводу, что в дизайне и в c# можно сделать я и не оспаривал, просто нагромождение жестокое выходит. Что-то там и в конструкторе типа запроса удалось своять. Но попутно вопрос, ну допустим все-таки в дизайн-тайме, как в рил-тайме, тому, что накидал, передать запрос? Т.е. кинул DataGridView, кликнул на треугольничек -Выберите источник, выбрал, таблицы и вьюхи не выбрал, создалось что-то такое пустое... В конструкторе сделал запрос. В риле необходимо, например, делать изменение запроса (не предлагайте только фильтры пожалуйста, хочу чистый SQL), т.е. необходимо просто впихивать разные запросы... Как и куда?
...
Рейтинг: 0 / 0
Прелести c#
    #38002193
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВkill_zdm1. Почему, во всех книгах по ado.net, в 99%, рекомендуют рвать коннект?
Это не рвать коннект, а высвобождать соединение. На случай, если у вас серверное приложение и очень много пользователей. Если простая двухзвенка, можете использовать одну коннекцию и никогда в процессе работы приложения не закрывать, опять же если все как обычно в делфи делается в одном ГУИ потоке.
А поясните, в чем разница в словах , разорвать коннект и высвободить соединение? Честное слово не понял разницы, разрыв и в том и в том случае произойдет?
На случай, если у вас серверное приложение и очень много пользователей - конечно серверное и пользователей много, как и лицензий на использование и контроль сессий (бездействий и т.д.), как раз в данном случае и необходим контроль и "НЕОБРЫВ" соединения.. В каком-нибудь приложение тет-а-тет, одни-на-один с базой, можно и рвать смело...
...
Рейтинг: 0 / 0
Прелести c#
    #38002194
йцуке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,
По теме есть хорошая книга: Сеппа Д. Microsoft ADO.NET. Читали?
...
Рейтинг: 0 / 0
Прелести c#
    #38002205
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йцуке,

да, с него и начал (спасибо все равно)... но как и сказал выше, там все под консоль.... для совсем начала может и хорошая вещь... но мне нужно под вин-приложения писать, все следующие далее мои хотелки... как работать с гридом и контролами, как в дизайне все делать, как передавать уже из созданого в дизайне запросы и в этом духе...
...
Рейтинг: 0 / 0
Прелести c#
    #38002215
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Сеппа, что касается вин-приложений.. то на уровне... обращений к одной таблицы.. кинул грид, создал коннект, указал таблицу и прям счастье наступило....... Не то.
...
Рейтинг: 0 / 0
Прелести c#
    #38002246
йцуке
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmУ Сеппа, что касается вин-приложений.. то на уровне... обращений к одной таблицы.. кинул грид, создал коннект, указал таблицу и прям счастье наступило....... Не то.
Вы, наверно, про создание всего в визуальном редакторе?
Можно, например, иметь в типизированном DataSet таблицы, которые не соответствуют таблицам базы, и заполнять их произвольными запросами, которые в свою очередь могут быть параметризованными, и которые можно насоздавать в визуальном редакторе. Соответственно, и в гриде отображать эту таблицу.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Прелести c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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