|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Изучаю C#, как понимаю есть 100500 подходов для работы с БД. Какой изучать? Какой модный/перспективный? Начал осваивать LinqToSQL, в целом понятно, достаточно просто, "из коробки" все работает, но наткнулся сегодня в инете на то что MS эту технологию хоронит и продвигает Entity Framework. Почитал про модели (Database First, Model First, Code First). Пытался потестить Database First в духе LinqToSQL и просто не смог, не смог добавить "ADO.NET Entity Framework" в MSVS 2015. Его просто нет. Не смог сгенерить классы по готовой БД. Не смог создать EDMX-файл, МС пишет устарело . Отсюда вопрос: в какую сторону изучать? Что нужно: пока пишу микросервисы, консольная прога + MSSQL, работает в автомате. Постепенно доберусь до гуя (десктоп приложение), раньше потребуется использование что-то типа SQLite, т.е. локальная СУБД не требующая установки. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 19:17 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
начинать учиться нужно с самых базовых вещей, с классов SqlConnection, SqlCommand, DataReader попробуй в консольном приложении прописать строку подключения к бд (ConnectionString), подключиться, выполнить некоторый SELECT , прочитать данные и получить результат в виде массива объектов поля которых соответствуют полям в таблице не используя никакие LinqToSQL , Entity Framework и ничего другого, все ручками.., да, будет много лишнего кода, но ты поймешь как и что устроено ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 20:30 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
depend86... подключиться, выполнить некоторый SELECT , прочитать данные и получить результат в виде массива объектов ... А зачем тогда C# с кучей наработок? Я этим писательством в С++ могу заниматься. Скорость работы кода будет выше, но скорость разработки значительно медленнее. Меня интересует второе. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 20:43 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
авторНачал осваивать LinqToSQL, Припозднился ты мальца. авторна то что MS эту технологию хоронит и продвигает Entity Framework. Правильней - LINQ2Entities авторПочитал про модели (Database First, Model First, Code First). Первые две лишние. авторНе смог сгенерить классы по готовой БД. Это с непривычки. Выбираешь add-new-item, потом ADP.NET Entity DataModel, потом Create CodeFirst from database ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2016, 22:44 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
MonochromatiqueЭто с непривычки. Выбираешь add-new-item, потом ADP.NET Entity DataModel, потом Create CodeFirst from database Везде пишут что add-new-item, но нет у меня там ADO.NET Entity DataModel. MSVS Community 2015 update 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 06:54 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima T , так установи пакет с nuget-а.. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 07:35 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueЭто с непривычки. Выбираешь add-new-item, потом ADP.NET Entity DataModel, потом Create CodeFirst from database Везде пишут что add-new-item, но нет у меня там ADO.NET Entity DataModel. MSVS Community 2015 update 2 А вот так? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 07:36 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
MonochromatiqueDima Tпропущено... Везде пишут что add-new-item, но нет у меня там ADO.NET Entity DataModel. MSVS Community 2015 update 2 А вот так? Так тоже не очень. Еще вчера наткнулся на рекомендуемый EntityFramework Reverse POCO Generator . Сходу он у меня не заработал. Только как понимаю это реверс Code First, т.е. сначала напиши классы в стиле Code First а потом эта штука визуализирует картинкой. Думаю надо поизучать Code First (раз уж везде пишут что это рекомендуемый подход для EF), а схему БД я и так имею в MSSQL Managment Studio. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 08:30 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima Tdepend86... подключиться, выполнить некоторый SELECT , прочитать данные и получить результат в виде массива объектов ... А зачем тогда C# с кучей наработок? Я этим писательством в С++ могу заниматься. Скорость работы кода будет выше, но скорость разработки значительно медленнее. Меня интересует второе. Интересное возражение. А как это помещает достижению Вашей цели? Кстати, а какая она? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 08:34 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
skyANADima Tпропущено... А зачем тогда C# с кучей наработок? Я этим писательством в С++ могу заниматься. Скорость работы кода будет выше, но скорость разработки значительно медленнее. Меня интересует второе. Интересное возражение. А как это помещает достижению Вашей цели? Кстати, а какая она? Цель - писать меньше букав кода. Меньше кода => меньше отладки => быстрее разработка. Как уже говорил 19661080 пишу на C# микроcервисы, т.е. проги без гуя работающие в полном автомате. Пока присматриваюсь к C# как альтернативе С++ в задачах не требующих особой производительности. Поэтому неинтересно заниматься велосипедостроительством оберток для запросов типа "select ... from MyTable where id = ...", тем более что велосипеды уже есть. Топик поднял чтобы выяснить каким лучше пользоваться, чтобы не тратить время на изучение всех. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 08:54 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TMonochromatiqueпропущено... А вот так? Так тоже не очень. Что значит "не очень"? Ты по ссылкам то прошел? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 08:57 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Победил. Появилась ADO.NET Entity DataModel При установке VS надо ставить галку "MS SQL Server data tools" Но, как уже написал, поизучаю подход Code-First, тут классы самому пописать придется, но с другой стороны будет понятнее как написанное воспринимается EF. С визардами случайно ткнешь не туда мышем и потом долго разбираешься почему стало не так работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 09:47 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TИзучаю C#, как понимаю есть 100500 подходов для работы с БД В конечном счете все они надстройка над ADO.NET (те самые IDbConnection, IDbCommand, IDbDataReader, которые тебе уже рекомендовали). Dima TКакой модный/перспективный? Вообще Linq - это самая перспективная технология доступа к данным в мире .NET на сегодня. Самый модный на сегодня, на сколько я понимаю, Entity Framework с моделью Code First (как уже сказали выше). Но стоит ли именно за него браться - не уверен... Лично я пользуюсь Linq2DB . Мне его возможностей хватает. Главный недостаток этой библиотеки - то, что ее разрабатывает и поддерживает, по сути, один человек. Главное, на мой взгляд, достоинство - в ней нет ничего лишнего; ровно то, что надо от легковесного ORM (никаких ChangeTraking-ов, LazyLoad и пр. лабуды). Ну и работает быстрее, чем EF. Кстати, Linq2DB - это то, к чему должен был бы прийти LinqToSql, если бы его не забросили. Для микросервисов, по-моему, самое оно. Но, есть риск, что разработчик забросит проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 09:55 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
щас модно XSLT, XQuery :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:13 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TskyANAпропущено... Интересное возражение. А как это помещает достижению Вашей цели? Кстати, а какая она? Цель - писать меньше букав кода. Дак это вообще на F# надо переходить :) А вообще меньше буков кода - это когда меньше всяких DTO, POCO, Business Objects, Services, Repositories, Mappers. И ещё ORM-ы бывают работают не так как вам надо, или не оптимально, или в них тупо баги и приходится писать код, чтобы это обойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:15 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
stomskyDima TИзучаю C#, как понимаю есть 100500 подходов для работы с БД В конечном счете все они надстройка над ADO.NET (те самые IDbConnection, IDbCommand, IDbDataReader, которые тебе уже рекомендовали). Ну так мне нужна надстройка, готовая, чтобы свою не строить. stomskyЛично я пользуюсь Linq2DB . Спасибо, посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:29 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima Tstomskyпропущено... В конечном счете все они надстройка над ADO.NET (те самые IDbConnection, IDbCommand, IDbDataReader, которые тебе уже рекомендовали). Ну так мне нужна надстройка, готовая, чтобы свою не строить.Dapper? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 10:31 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
skyANAА вообще меньше буков кода - это когда меньше всяких DTO, POCO, Business Objects, Services, Repositories, Mappers. Если не злоупотреблять, то много не будет. skyANAИ ещё ORM-ы бывают работают не так как вам надо, или не оптимально, или в них тупо баги и приходится писать код, чтобы это обойти. Невозможно оптимально обернуть РСУБД с помощью ООП, но это не мешает в 99% случаев, в оставшемся 1% можно позаморачиваться с оптимизацией. Для простых запросов Linq генерит вполне нормальные select`ы, более сложные вещи можно вынести на сторону sql-сервера (писать ХП или view делать). Багов хотелось бы поменьше, поэтому и хочу ширпотребное решение, чтобы баги по-максимуму уже были убраны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 11:33 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TДля простых запросов Linq генерит вполне нормальные select`ы, более сложные вещи можно вынести на сторону sql-сервера (писать ХП или view делать).Как измеряется сложность запроса? Количеством букв? Количеством таблиц? Количеством полей? Если да, то при каком количестве букв/таблиц/полей в запросе применять LINQ уже нельзя? Да, через LINQ нельзя сгенерировать, например, рекурсивный SQL-запрос, данную часть SQL придётся вынести во view. Но к сложности это не имеет никакого отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 11:46 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Алексей КDima TДля простых запросов Linq генерит вполне нормальные select`ы, более сложные вещи можно вынести на сторону sql-сервера (писать ХП или view делать).Как измеряется сложность запроса? Количеством букв? Количеством таблиц? Количеством полей? Если да, то при каком количестве букв/таблиц/полей в запросе применять LINQ уже нельзя? Эмпирически. Сравнением того что LINQ нагородил и того как бы сам написал, затем изучение плана выполнения того и другого. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 12:06 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
skyANADapper? Спасибо. На первый взгляд это то что надо. Объекты есть, кода минимум, запросы в SQL, нет гимора следить что LINQ генерит. Сейчас потестю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 12:14 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima TАлексей Кпропущено... Как измеряется сложность запроса? Количеством букв? Количеством таблиц? Количеством полей? Если да, то при каком количестве букв/таблиц/полей в запросе применять LINQ уже нельзя? Эмпирически. Сравнением того что LINQ нагородил и того как бы сам написал, затем изучение плана выполнения того и другого.Ну пиши LINQ запрос так, чтобы на выходе получался нужный план выполнения SQL запроса. Так говоришь, как будто при генерации SQL запросов используется генератор случайных чисел. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 12:55 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Dima T нет гимора следить что LINQ генерит. Дмитрий должно быть занимается _настоящим_ хай-лоад ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 13:04 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Алексей КDima Tпропущено... Эмпирически. Сравнением того что LINQ нагородил и того как бы сам написал, затем изучение плана выполнения того и другого.Ну пиши LINQ запрос так, чтобы на выходе получался нужный план выполнения SQL запроса. Так говоришь, как будто при генерации SQL запросов используется генератор случайных чисел. :-) Ну не всегда возможно. С LEFT JOIN все плохо, UNION не получилось заставить сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 13:47 |
|
Как работать с БД ?
|
|||
---|---|---|---|
#18+
Затестил Dapper Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Свобода полная. Букав немного. Классы, чтоб не долбить руками, можно нагенерить с помощью ADO.NET Entity DataModel. Попробую переписать что-нибудь небольшое на нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 14:11 |
|
|
start [/forum/topic.php?fid=17&msg=39309035&tid=1349362]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 493ms |
0 / 0 |