Показаны сообщения с ярлыком ms sql ce. Показать все сообщения
Показаны сообщения с ярлыком ms sql ce. Показать все сообщения

Микромир ORM на примере Massive

12 февр. 2013 г. | | |

В мире больших и тяжеловесных ORM-решений, таких как NHibernate и Entity Framework, вполне предсказуемым стало появление течения микро-ORM: легковесных прослоек между БД и объектами приложения. Чем хороши microORM? Прежде всего, скоростью выполнения запросов: она сопоставима со скоростью чистых запросов через SqlDataReader. Потом - микро размерами: например, Massive - это всего лишь один подключаемый файл на 673 строки кода, в отличие от NHibernate или EF, которые тянут за собой целую dll-ку на несколько сот килобайт.  Наиболее известные из micro ORM:
1) Dapper, разработанный и активно использующийся в StackOverflow и StackExchange
2) Massive, разработанный Rob Conery, пример использования - HanselMinutes
3) PetaPOCO

Massive - это лучше, чем шоколад

Основа Massive - это dynamic-типы, появившиеся в .NET 4.0. Чтобы понять, что такое Massive, как и зачем он появился на свет, посмотриет видео  "Kill your ORM" с выступления Роба Конери на NDC 2011. А чтобы понять, насколько Massive лучше шоколада,  давайте напишем небольшое тестовое приложение, выводящее план счетов из БД в сгруппированом виде.

LocalDB

27 мар. 2012 г. | | |

Вместе с новым  MS SQL Server 2012 под кодовым именем Denali разработчики представили нам отпрыска линейки SQL Server Express – LocalDB, который ориентирован на single-user приложения и не требует установки, предварительной конфигурации и запуска сервиса сервера (в отличие от полноценного MS SQL Server) и. Напоминает MS SQL Server CE?

Где разница?


А разница в том, что LocalDB – это полноценный SQL Express, который поддерживает все возможности MS SQL Server, в отличие от SQL CE, который предоставляет очень урезанный T-SQL и другие возможности (различия см. тут http://msdn.microsoft.com/en-us/library/bb896140.aspx). К тому же, LocalDB работает как дочерний процесс приложения, используя тот же sqlservr.exe, что и обычный SQL Express: приложения могут использовать стандартные провайдеры (ADO.NET, ODBC, PDO и др.) для работы с БД. А Sql Server CE – это inproc dll.

Хорошо, в чем же тогда отличие от   SQL Express? Во-первых, как уже было сказано, для LocalDB не требуется создание сервиса. Процесс LocalDB стартует при подключении приложения к нему и завершается автоматически, если подключений больше нет. Кроме того, есть такая фича, как  AttachDbFileName, которая позволяет разработчику указывать расположение файла БД, к которому нужно подключиться.

Что же выбрать? 

Очевидно, что для небольшого portable-приложения LocalDB - это слишком. Но если важна совместимость с MS SQL Server и в дальнейшем планируете переходить на полноценный MS SQL Server, только не хочется устанавливать еще один сервис, то LocalDB – ваш выбор. MS Sql CE выигрывает, если важно:

1) Размер БД (например, приложения для мобильных девайсов): 18 Мб на диске (Sql CE 4.0) против 160 Мб (LocalDB). (хорошая таблица сравнения параметров http://erikej.blogspot.com/2011/01/comparison-of-sql-server-compact-4-and.html)

2) Возможность распространения приложения через XCOPY: LocalDB требует установки через msi, SQL Server CE работает, если скопированы нужные файлы


Хитрый Delete для Sql Server CE

23 нояб. 2011 г. | | |

Маленький хак для Sql Server CE, который компенсирует отсутствие возможности удаления записей из таблицы с помощью такой конструкции
DELETE FROM bookings LEFT OUTER JOIN accounts ON bookings.AccountID = accounts.ID WHERE accounts.AccountNumber="1100"
Вместо этого вы можете использовать конструкцию
DELETE FROM bookings WHERE AccountID NOT IN (SELECT ID FROM accounts WHERE accounts.AccountNumber<>"1100")

Чего нет в SQL Server Compact 4.0

4 окт. 2011 г. | | |

А нет в 4-ом компакте целой кучи всего:
  1. Репликация данных с SQL Server - ни через Sync Framework, ни через слияние или удаленный доступ к данным. 
  2. Нет поддержки службы SQL Server 2008 Integration Services (SSIS)
  3. SQL Server Management Studio для Sql Server Compact 4 тоже не поддерживается
  4. О мобильных платформах (Windows Mobile, Windows Phone или Windows CE) тоже можно забыть. 
  5. Не поддерживается LINQ to SQL (чего стоило, но не хотелось, ожидать). Все дружно переходим на Entity Framework.

Но всё это поддерживается в SQL Server Compact 3.5 SP2.
Т.е. для того, чтобы перевести существующий проект (SQL CE 3.5 + Linq2Sql) на использование Sql Server CE 4.0, нужно заодно  переехать на Entity Framwork либо другую ORM-прослойку. Стоит ли оно того, вот в чем вопрос.

MS Sql Server CE : какая dll для чего нужна?

12 окт. 2010 г. | | |

После установки MS SQL Server CE мы получаем целый набор dll-файлов. Для чего нужна какая dll? Что нужно добавлять в проект, а что нет? Сейчас будем разбираться.

SqlCE 3.5 to 4.0 Converter

26 авг. 2010 г. | | |

Недавно (в июле этого года) вышла новая версия MS Sql CE, в которой был изменен алгоритм шифрования (стал использоваться SHA-2). Это означает, что для работы sql ce 4 с бд, созданной сервером версии 3.5, ее нужно предварительно переконвертировать. Для это в API предусмотрен специальный метод, поэтому особого труда конвертирование не вызовет.
Давайте напишем конвертер для файлов баз данных в формате slq ce 3.5 в формат slq ce 4.0.
Писать будем на C# в TDD-стиле, использовать VS 2008, тестировать в xUnit (последнюю версию можно скачать с codeplex). Когда вы используете TDD, не нарушая основных принципов ( а их всего три - RGR (красный-зеленый-синий): пишем тест, пишем код, рефакторим) и порядка их следования, то получаете автоматически приятные бонусы в коде.

Warning! Этот пост нужно рассматривать как пример по разработке в стиле TDD для начинающих.

MS Sql CE 4 CTP1

| | |

В июле этого года вышел SQL Server CE 4 CTP1, что, конечно же, является хорошей новостью! Скачать sql ce 4 можно с сайта Microsoft, дистрибутив радует размером - всего 2.5 мб для х64 и 2.0 мб для х32.
Что же нового в четвертом компакте? Много было сделано для использования sql ce в ASP.NET приложениях - теперь компакт выдерживает нагрузку сайтов-стартеров с не большим количеством посещений. Внедрили поддержку SHA 2 - шифрования. Это означает, что для перехода с sql ce 3.5 на 4.0 база данных должна быть предварительно проапгрейдена предусмотренным в API методом SqlCeEngine.Upgrade(). Так же это означает, что slq ce 3.5 не может работать с файлами данных, созданными четвертым компактом.
Компакт теперь умеет беспроблемно работать с ADO.NET Entity Framework 4.0, что тоже радует :)
Важно отметить, что в четвертом компакте изменился Transact-SQL-синтаксис: добавлены ключевые слова OFFSET & FETCH:

SELECT * FROM Employees ORDER BY [Hire Date] OFFSET 10 ROWS;
SELECT * FROM Orders ORDER BY [Shipped Date] OFFSET 2 ROWS FETCH NEXT 1 ROW ONLY;

Так же изменился API:
System.Data.SqlServerCe.SqlCeConnection.GetSchema() - возвращает информацию о базе данных.

SqlCeConnection conn = new SqlCeConnection("DataSource=Northwind.sdf");
try
{
conn.Open();
DataTable dt = conn.GetSchema();
dt = conn.GetSchema("Tables");
dt = conn.GetSchema("Columns");
dt = conn.GetSchema("Indexes");
dt = conn.GetSchema("IndexColumns");
dt = conn.GetSchema("ForeignKeys");
}
catch (Exception e)
{
//Fail
}

System.Data.SqlServerCe.SqlCeConnectionStringBuilder - позволяет легко строит connection strings для компакта.

SqlCeConnectionStringBuilder builder = new SqlCeConnectionStringBuilder();
builder["Data Source"] = sqlCEdbPath;
builder["Mode"] = dbMode;
builder["Password"] = password;
Console.Write( builder.ConnectionString );

Более подробно об этих и других нововведениях можно почитать в блоге Rob Tiffany
А тут можно почитать о тулзе для конвертирования файлов sql ce 3.5 в slq ce 4.0

SQLite Vs MS SQL CE

17 февр. 2010 г. | | |

Небольшая сравнительная характеристика двух embedded-бд.

  • + SQLite мальнкий размер БД (пустая база весит несколько килобайт против нескольких сот килобайт ms sql ce)
  • + SQLite - кроссплатформенная бд.
  • - MS SQL CE - лимит файла БД в 4 Гб против 1 Tb у SQLite
  • - MS SQL CE - нет триггеров, представлений (на этом моменте хочется заплакать:( )
  • - MS SQL CE - уступает по скорости SQLite
  • - SQLite - нет типа boolean
  • - SQLite - провайдеры linq to sqlite только платные, бесплатный недопиленный (не позволяет работать с представлениями)
  • + SQLite - опенсорсный проект, MS SQL CE - закрытый исходный код