Установка одной базы данных на клиентский ПК может быть сложной. Я думаю, что у вас есть приличное представление о том, как справиться с проблемой в настоящее время. Кажется, что реальная проблема, с которой вы сейчас сталкиваетесь, это отладка. Чтобы справиться с этим, есть несколько способов:
- Попросите клиента загрузить свою копию базы данных обратно к вам. Это предоставит вам данные, которые у них есть, и вы сможете использовать их с отладочной копией кода для выявления проблем. Недостатком является то, что если база данных велика, это может быть проблемой при ее передаче.
- Пульт на машину клиента. Наблюдайте за системой удаленно, используя что-то вроде CoPilot . Таким образом, вы сможете увидеть, что происходит в естественной среде.
Возможно, есть и другие способы, но это пара хороших. Что касается использования онлайновой базы данных, это вариант, но он имеет свой собственный набор проблем. Вы упомянули пару. Что касается Azure, то он основан на облаке (онлайн), поэтому к нему будут применяться те же проблемы. SQL CE не поможет вам больше, чем ваша текущая установка.
Суть в том, что я бы порекомендовал вам поискать способы устранения одной проблемы (как указано выше) вместо создания нового набора проблем путем перехода к интернет-решению. Я бы порекомендовал переходить в Интернет только в том случае, если он решает более масштабные задачи бизнеса (например, мобильность). То же самое, что вы делали только в Интернете, вероятно, только усложнит жизнь.
Чтобы подытожить комментарии, приведенные ниже, поскольку они имеют отношение к данной проблеме, если вы выбираете между файловыми базами данных, которые не нужно физически устанавливать на машине, ваш лучший выбор, вероятно, между SQLite и SQL CE. Microsoft лучше поддерживает SQL CE, но это более крупный пакет и меньше возможностей, чем урезанный SQLite. Вот хорошее обсуждение различий:
https://stackoverflow.com/questions/2278104/sql-ce-sqlite-what-are-the-differences-between-them
Однако проблема усложняется, когда вы начинаете смотреть на linq2sql, поскольку он предназначен для SQL-сервера. Microsoft не поддерживает SQL CE с linq2sql из коробки, хотя есть обходной путь, который заставит его работать:
http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx
SQLite вообще не поддерживается с linq2sql, но есть способ использовать linq для общения с SQLite:
LINQ с SQLite (linqtosql)
Эта библиотека также поддерживает другие распространенные базы данных, включая MySQL и Firebird.