Pull to refresh

Comments 8

А Entity Framework с CodeFirst from Database вашу проблему бы не решил?
Большинство фреймворков платные для коммерческого использования. Потом решили использовать NHibernate — тихий ужас. Кривой, маппинг надо писать в ручную… Спецификация скудная, на русском мало чего есть. А тут сгенерировал, читай msdn да шлепай запросы.
EF бесплатен для коммерческого использования. System.Data.SQLight — тоже.
Вы зря отошли от стека MS, выбрав SQLite в качестве базы данных, и теперь вынуждены бороться с последствиями этого выбора, используя генератор моделей, который автор забросил 5 лет назад и который нужно пересобирать под новую версию .NET самому.

Под ваши условия идеально бы подошли SQL CE 4.0 и Entity Framework. Тогда модели генерировались бы самой Visual Studio по схеме БД, все работало бы из коробки с официальной поддержкой, апдейтами и уймой документации, без лишних телодвижений и рукописных конфигов. Да еще и бесплатно.

Кроме того, в вашем случае есть одна скрытая проблема: SQLite и MSSQL все-таки разные движки, и LINQ-провайдеры для них разные. Существует вероятность, что вы напишете такой LINQ-запрос, который провайдер MSSQL сможет сконвертировать SQL, а провайдер SQLite — нет, в результате чего приложение будет падать в рантайме. С SQL CE 4.0 этот шанс тоже существует, но он гораздо ниже.
В SQL CE смущает то, что он deprecated
Posted by Microsoft on 18.02.2013 at 11:52
Hi,
Thank you very much for your feedback on this issue. SQL Server compact edition is in deprecation mode with no new releases planned near future. Last release SQL CE 4.0SP1 (and earlier releases that are still in the support cycle) will continue to be supported through its lifecycle and Microsoft is committed to fix any major, production blocking issues found in these releases. At this point, we don't consider this issue to be in that category and hence we are closing this issue.
On the desktop/laptop deployments, migrating to SQL Server LocalDB/SQL Express is a possible option for many of the current users (http://msdn.microsoft.com/en-us/library/hh510202.aspx)

thanks for your support
(с) источник

Про скрытые грабли подтверждаю. Генератор запросов от mssql использовать для чуть более сложных вещей не получится. Почти сразу наступил, что лимиты и генерация автоинкремента отличается в sqlite. А с указанием другого генератора — проблемы.
При создании DataContext с указанием внешнего маппинга, для генерации sql используется либо указанный в атрибуте Provider класс, либо провайдер mssql. Причем класс, указанный как провайдер, должен реализовывать internal интерфейс из System.Data.Linq, что по понятным причинам невозможно.

Пока наиболее жизнеспособным выглядит решение от деварт, с их собственным DataContext, который принимает их реализацию провайдера. Но решение платное.
SQL Server LocalDB — тот же Compact под новым названием, и он прекрасно поддерживается EF.
UFO just landed and posted this here
linq2db попробуйте. По сути своей это Dapper, но с поддержкой LINQ-запросов. Крайне легковесная штука.
Sign up to leave a comment.

Articles