Как стать автором
Обновить

Провайдеры ado.net entity framework

.NET *
Как известно, в середине года в сервиспаке к .net framework 3.5 и VS2008 появятся некоторые расширения ado.net. Одним из них станет ado.net entity framework, который доступен сейчас для скачивания в версии beta 3 здесь. На данный момент это уже вполне рабочая реализация, которая достойна самого пристального внимания. Ей не хватает некоторых инструментов для удобного моделирования, но надеюсь, в финальной версии все будет.

Хорошая новость состоит в том, что недавно разработчки ado.net на своем блоге сообщили, что для текущей версии entity framework реализованы бета версии провайдеров:
— компания Core Lab выпустила ado.net провайдер для доступа к БД Oracle, MySQL, PostgreSQL and SQLite;
— компания IBM выпустила свой провайдер для DB2, IDS and U2 (честно говоря, два последних сокращения мне не известны);
— на конференции MySQL в Санта Клара бал продемонстрирован доступ к MySQL через entity framework;
— Npgsql выпустила бета версию провайдера для PostgreSQL который работает с Entity Framework.

Похоже, что LINQ и Entity Framework получают все больше возможностей стать популярными не только среди разработчиков баз данных MS SQL, но и всех других самых распространенных БД.

Ссылка на блог разработчиков ado.net blogs.msdn.com/adonet
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 4.6K
Комментарии 2

Выпущены Visual Studio 2008 SP1 Beta &.NET 3.5 SP1 Beta

.NET *
11 числа на блоге разработчиков ado.net выложена информация о выходе предварительных версий сервиспаков для VS2008 и .net framework 3.5. Скачать их можно тут msdn.microsoft.com/en-us/vstudio/cc533448.aspx.

Сегодня разработчики ado.net поделились информацией о своих нововведениях в этих релизах. Выделю самое интересное:
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Просмотры 846
Комментарии 8

ADO.NET Entity Framework близкое юзание

.NET *
Тем, кто пишет запросы в коде страницы посвящается...

Приветствую всех!

На хабре есть немного информации о том, что в следующей версии VisualStudio 2008 будет ADO.NET EntityFramework. (Открою секрет, эта версия уже появилась.) Эта разработка представляет собой универсальный фреймворк, который позволяет создавать даталогику вашего проекта в пару кликов мыши.
До сих пор, работая с даталогикой, я сталкивался с 2 видами проектов. Первые были созданы на небезызвестном фреймворке NHibernate, другие реализовывали даталогику программистами. Я уже 3 года занимаюсь написанием и разработкой различных систем и всё это время разрабатывал логику работы с данными исключительно ручками.
И вот, на днях, после того, как я поставил новую винду, я скачал VisualStudio WebDeveloper Express, и с радостью обнаружил в комплекте поставки ADO.NET EntityFramework. Через некоторое время зарегистрировал домен, создал простенький сайт, и начал тренировать свои силы в написании программ под этот фреймворк.

Вперёд, к коду!
Всего голосов 48: ↑44 и ↓4 +40
Просмотры 20K
Комментарии 120

Наследование в ADO.NET Entity Framework

.NET *
О чём вы, Морфеус?


Приветствую всех!
Моя первая статья на хабре была оценена хабраюзерами достаточно высоко. Что же, спасибо всем кто оставил своё мнение о статье, мне было приятно вас почитать, я продолжаю.

В новой статье хотелось бы поговорить о наследовании. Признаться честно, до изучения ADO.NET Entity Framework я вообще даже не задумывался о том, чтобы вводить в свои проекты наследование сущностей в объектно-ориентированных обёртках для БД. Обычно базу строили так, чтобы максимально избегать наследования. Хотя, порой оно и маячило на горизонте, но обходилось. Сейчас я опишу, как я добавил в свой проект два очень простых класса, которые были отнаследованны от уже имеющихся таблиц.

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

И так,
погружаемся...
Всего голосов 38: ↑26 и ↓12 +14
Просмотры 8K
Комментарии 15

Новая версия Entity Framework будет поддерживать внешние ключи в концептуальной модели

Чулан
Многие, кто сейчас работают с Entity Framework, жалуются на отсутствие внешних ключей в концептуальной моделе, то есть в тех классах, которые генерирует Entity Framework. В результате, простая задача по добавлению или обновлению записи часто выглядит не очень изящно. То есть либо приходится подгружать связанную запись, что приводит к выполнению лишнего запроса к базе данных, либо создавать новый объект класса EntityKey, что требует написания лишнего кода и после простого и простого в использовании LINQ to SQL выглядит по-меньшей мере странно.

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 274
Комментарии 4

Использование SQLite в .NET приложениях

.NET *SQLite *


В некоторых проектах достаточно часто возникает необходимость в хранении данных, объем которых уже нельзя назвать маленьким, но в тоже время использовать какую-либо СУБД слишком накладно из-за сложности развертывания приложения. И тут на помощь приходит такая прекрасная вещь как SQLite – компактная встраиваемая база данных.

Для тех, кто пишет с использованием платформы .NET приятным моментом станет наличие
Читать далее...
Всего голосов 61: ↑52 и ↓9 +43
Просмотры 146K
Комментарии 48

Изучение ASP.NET+ADO.NET+Silverlight

.NET *
Совсем недавно я начал работу над одним проектом, подразумевающим создание веб-сервиса с удобным графическим интерфейсом. В то время я обладал лишь достаточно базисными знаниями языка C# и навыками в разработке Windows-приложений на .NET технологиях. Именно поэтому я решил тогда построить веб-приложения на технологиях ASP.NET, ADO.NET (сервис предполагает активное взаимодействие с БД) и Silverlight.
Прошло всего несколько недель, и сервис готов больше, чем на половину. Не могу сказать, что знаю о вышеуказанных технологиях всё, но вполне достаточно :) Собственно мой топик сейчас — это рассказ о том, как, на мой взгляд, следует учить эти технологии и что читать. Фактически я написал то, что мне очень не хватало в свое время — практически план действий. Я нисколько не претендую на звание профессионала в указанных отраслях, просто хотелось бы дать несколько советов новичкам и просто начинающим. Итак, начнем.
Читать дальше →
Всего голосов 26: ↑18 и ↓8 +10
Просмотры 11K
Комментарии 18

SqlDataReader в Debug и Release конфигурациях

Чулан
Использовал в проекте получение данных с помощью SqlDataReader'а:
IDataReader reader = cmd.ExecureReader();
DataTable table = new DataTable();
table.Load(reader);
reader.Close();


В таблице, из которой берутся данные, некоторые колонки не допускают хранение null. Так вот, в конфигурации Debug все колонки таблицы table имеют AllowDBNull = true, а конфигурации Release — полное соответствие со схемой таблицы в БД — некоторые колонки имеют AllowDBNull = false.

Гугление ничего не дало. Может кто-нибудь подскажет объяснение такому поведению, и расскажет, какие еще интересности может таить SqlDataReader?
Всего голосов 18: ↑7 и ↓11 -4
Просмотры 216
Комментарии 5

MS SQL 2008: Табличный тип с колонками вида sql_variant (пока?) несовместим с ADO.NET

.NET *
sql_variant — Тип данных, хранящий значения различных типов данных, поддерживаемых SQL Server.

Может быть полезен в каких-то обобщающих аспектах разрабатываемой БД. Например, в таблице настроек приложения или при ведении динамических свойств объекта.

Что касается ADO.NET, то здесь возможное удобство в том, что sql_variant можно передать из управляемого кода в хранимую процедуру, которая является обобщенной для передаваемого значения. Если требуется разветвлять логику согласно передаваемому значению, то фактический тип можно узнать через функцию SQL_VARIANT_PROPERTY.

На самом деле, проблем с единичным параметром нет. Проблемы возникают тогда, когда нужно передавать список параметров.

Как же без облома?
Всего голосов 4: ↑2 и ↓2 0
Просмотры 4.7K
Комментарии 0

Как подключиться к MySQL используя ADO.NET

Чулан
Из песочницы
Когда я начал свое знакомство с технологией ADO.NET меня сразу заинтересовал вопрос: «Как можно подключиться к MySQL, используя технологию ADO.NET». Я начал искать решения. Сейчас, когда я реализовал у себя на компьютере все это, хочу с вами поделиться своим опытом и навыками. Давайте для начала разберем, что нам понадобится для реализации этой затеи.

  1. Сервер баз данных MySQL
  2. Visual Studio (В моем примере это Visual Studio 2010)
  3. Библиотека для работы с MySQL


Надеюсь, что у вас уже установлен сервер баз данных MySQL и программа Visual Studio. Если нет, тогда сделайте установку до того, как приступите к работе. Все готово. Visual Studio установлена, сервер баз данных MySQL установлен. Первым делом нам понадобится dll библиотека MySQL, которая будет помогать работать с ADO.NET в среде .NET Framework. Скачать библиотеку можно на официальном сайте MySQL по адресу: dev.mysql.com.
Читать дальше →
Всего голосов 13: ↑2 и ↓11 -9
Просмотры 13K
Комментарии 16

Высоконагруженные системы: решение основных проблем

Блог компании Plarium
Tutorial
Привет, Хабр!

Сегодня я хочу рассказать о некоторых решениях проблем, которые возникают во время использования высоконагруженных систем. Все, о чем пойдет речь в этом материале, проверено на собственном опыте: я – Social Games Server Team Lead в компании Plarium, которая занимается разработкой социальных, мобильных, браузерных игр.

Для начала немного статистики. Plarium занимается разработкой игр с 2009 года. На данный момент наши проекты запущены во всех наиболее популярных социальных сетях («Вконтакте», «Мой мир», «Одноклассники», Facebook), несколько игр интегрированы в крупные игровые порталы: games.mail.ru, Kabam. Отдельно существует браузерная и мобильная (iOS) версии стратегии «Правила войны». В базах числятся более 80 миллионов пользователей (5 игр, локализация на 7 языках, 3 миллиона уникальных игроков в день), в итоге все наши серверы получают в среднем около 6500 запросов в секунду и 561 миллион запросов в сутки.

В качестве аппаратной платформы на боевых серверах в основном используются два серверных CPU с 4 ядрами (x2 HT), 32-64 GB RAM, 1-2 TB HDD. Серверы работают на базе Windows Server 2008 R2. Контент раздается через CDN с пропускной способностью до 5 Gbps.
Разработка ведется под .NET Framework 4.5 на языке программирования C#.

Учитывая специфику нашей работы, необходимо не только обеспечить стабильное функционирование систем, но и гарантировать, что они смогут выдержать большой скачок нагрузки. Увы, многие популярные подходы и технологии не выдерживают проверку высокой нагрузкой и быстро становятся узким местом в системе. Поэтому, проанализировав множество проблем, мы нашли оптимальные для нас (как мне кажется) пути их решения. Я расскажу, какие технологии мы выбрали, от каких отказались, и объясню, почему.

Все самое интересное - под катом
Всего голосов 28: ↑23 и ↓5 +18
Просмотры 47K
Комментарии 25

32-битный Excel и 64-битный SQL Server

Microsoft SQL Server *
Прочитать в SQL Server табличку из Excel… В самом деле, что может быть проще? Для этого существует масса возможностей. Есть инструмент Integration Services, который бывшие DTS, есть мастер импорта/экспорта, который «за сценой» то же самое, можно по-быстрому сваять собственное ADO.NET-приложение, наконец, если неохота стрелять из пушек по воробьям, можно воспользоваться механизмом прилинкованных серверов, известным, как DTS, еще со времен семерки, который позволяет легко и элегантно увидеть теоретически любой ODBC/OLE DB-достижимый источник в виде таблицы (совокупности таблиц) или результата непосредственного (ad hoc) запроса. Так было до тех пор, пока 64-битная архитектура не перестала быть чем-то из области hi end и пришла на ноутбуки разработчиков и пользователей. Обычный пользователь, наверное, все-таки вряд ли будет ставить себе сервер баз данных, но для разработчика отнюдь не экзотична ситуация, когда на одной х64-машине уживаются 64-битный SQL Server с 32-битным MS Office. В этом случае создание прилинкованного сервера на Excel или Access вызывает проблему, потому что драйвера для них, понятно, 32-битные, которые SQL Server, будучи 64-битным, не понимает. Нет у него в списке известных ему провайдеров ничего похожего, хотя офис со всеми прибамбасами, включая connectivity, на компе стоит.


Рис.1

Соответственно, попытка использовать прилинкованный сервер на Excel, как описано в документации, приводит к ошибке Msg 7302, Level 16, State 1, Line 1
Cannot create an instance of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server…
Возникает извечный вопрос «что делать»?
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Просмотры 56K
Комментарии 14

Оптимизация DataTable по памяти

.NET *C# *
Из песочницы
Думаю, многим хорошо знаком класс DataTable. Вычитывая из БД на клиент большие таблицы через ADO.NET, иногда приходится продлевать время жизни экземпляров этого класса на продолжительное время. Например, если нужна обработка и анализ полученных данных, не прибегая к ORM материализации (да, лучше бы это делать в БД, но далеко не всё порой удаётся туда вынести). Когда объём данных невелик, то особой проблемы с этим не возникает. Однако на широких таблицах с большим числом строк можно получить довольно толстые объекты в памяти. Сопоставив объём данных, приходящих из БД, и размер получаемого DataTable, можно прийти к двум выводам:

  • При больших объёмах varchar данных, среди которых есть дублирование, можно попробовать организовать некое подобие интернирования строковых данных внутри DataTable;
  • DataTable содержит довольно увесистую внутреннюю инфраструктуру. Манипулируя с типами данных и числом строк в таблице, удалось установить, что процент накладных расходов составляет 15-20% для таблиц от 100 тыс. записей. Большая часть инфраструктуры обеспечивает корректное редактирование и прочий функционал таблицы. В случае, когда вам требуется, чтобы DataTable был простым контейнером для данных, полученных из БД, то можно написать лёгкий выпотрошенный аналог этого класса.

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 12K
Комментарии 12

ASP.NET MVC – работаем с MySQL через ADO.NET

MySQL *Программирование *.NET *ASP *
Legacy технологии
Предупреждение: и ASP.NET MVC устарел и ADO.NET тоже. Рекомендуется использовать ASP.NET Core с современным ORM. Но если вам интересно, то читайте.

Уже, наверное, раза три подбираюсь к ASP.NET MVC. После десяти лет с ASP.NET WebForms немного сложно переходить именно к технологии MVC, поскольку отличий столько, что скорее проще перечислить, что у этих технологий общего – это разве что библиотеки .NET Framework. Я не буду писать тут – лучше или хуже MVC чем WebForms, просто они обе хороши, и на обеих технологиях можно построить хорошее приложение. Свои мысли по поводу необходимости TDD я тоже пока оставлю при себе, хотя их есть у меня.

А сейчас я буду говорить о стандартнейшей задаче – обычной работе с данными: просмотре в табличном виде списка записей, добавлении, изменении и удалении данных (операции CRUD). Однако практически во всех книгах и во многих решениях в интернете для ASP.NET MVC почему-то рассматривается вариант исключительно через ORM (Object Relation Mapping): или Entity Framework (EF) или LINQ для SQL. Технологии отличные, спору нет, наконец-то программист может и не разбираться – а как вообще эта самая реляционная СУБД (которой он, скорее всего, пользуется) вообще работает, и даже SQL, по идее, знать уже необязательно: прокладка в виде EF и коннектора для СУБД разберутся между собой. «Вот оно счастье – нет его краше». Но тем программистам, которые не боятся прямой работы с базой данных через механизм ADO.NET, зачастую непонятно – а с чего вообще начинать в ASP.NET MVC и надо ли.
Читать дальше →
Всего голосов 14: ↑8 и ↓6 +2
Просмотры 11K
Комментарии 41

.NET 6 и провайдеры баз данных

.NET *SQL *C# *
Из песочницы

Все материалы, которые будут показываться в ходе данной статьи будут доступны по данной ссылке https://github.com/vliashko/CommunicationWithDB. Вполне возможно, что со временем данный репозиторий будет обновляться, или, некоторые захотят сами принять участие в его развитии.

Можно ли сегодня представить разработку, будь то десктопы или веб, без использования баз?

Ну, чисто в теории можно, есть еще старенькие проекты, использующие файловую систему, идею которых можно еще увидеть в университетских лабораторных по сей день.

В чем же так плоха файловая система? Ну на самом деле, говоря на своем опыте, можно выделить следующие пункты:

1. Блокировка файла, в который идет запись

2. Отсутствие специализированных программ для работы с файлами (аналог СУБД)

Да, в какой-то мере можно выделить еще минусы, или попытаться закрыть уже названные мной. Но в целом главная идея базы данных – это удобство для чтения данных, а также наличие огромного числа инструментов для работы с данными (возможность быстрого поиска по полям таблицы, соединение таблиц, группировка записей, индексирование и т.д.)

Будем считать, что я смог в какой-то мере убедить, или хотя бы заинтриговать тем, что базы – это крутой механизм, который надо знать и уметь использовать.

Тогда давайте рассмотрим как пользоваться базами данных на платформе .NET с использованием языка C#.

Читать полностью
Всего голосов 12: ↑6 и ↓6 0
Просмотры 4.8K
Комментарии 13