LINQ To SQL в Compact Framework - PullRequest
       38

LINQ To SQL в Compact Framework

5 голосов
/ 14 декабря 2009

Я собираюсь разработать свой доступ к данным для нового решения, которое я создаю. Это решение, однако, содержит приложение Compact Framework Device Application и библиотеки, помимо Desktop. Все .NET 3.5. Desktop будет обрабатывать весь доступ к данным в основном. Мне нужно, чтобы объекты данных тоже были в CF, Desktop будет взаимодействовать с SQL, а затем с Mobile и выдавать соответствующие данные ...

Я люблю LINQ, и еще больше я люблю LINQ 2 SQL. Там много шумихи, и я не покупаю внутреннюю политику Microsoft по поводу рекомендации EF. На данный момент EF слишком тяжелый и слишком сложный, чтобы кто-то мог его выбрать, кроме того, он все еще развивается, и через несколько месяцев EF 4 претерпит серьезные изменения. Но я не могу ждать месяцами, чтобы создать проект, так как каждый разработчик здесь, я хочу что-то сейчас! После того, как я сказал, что хочу использовать LINQ 2 SQL, моя проблема в том, что я не могу просто скопировать сгенерированный dbml и использовать сгенерированные классы. Мне не нужен DataContext, потому что я не собираюсь использовать CRUD или какие-либо операции с базой данных с помощью мобильного приложения. Я просто хочу объекты. Кто-нибудь когда-нибудь сталкивался с такой ситуацией? Весь смысл не в том, чтобы писать все классы, представляющие таблицы вручную. Потому что они нужны мне для дальнейшей манипуляции с LINQ to Objects.

По сути, ORM, поддерживающий CF, сделает эту работу! Но я не знаю каких-либо несовместимостей, с которыми я бы столкнулся.

Ответы [ 5 ]

3 голосов
/ 16 декабря 2009

Мне удалось изменить SubSonic 3.0 , порт db4o / Mainsoft System.Linq.Expressions из проекта Mono после добавления отсутствующего Queryable источники и IQToolkit Мэтта Уоррена на Codeplex для предоставления L2S-эквивалента для CF.

Это примерно то, что нужно, поскольку деревья выражений Linq не поддерживаются в .Net CF 3.5.

Мне удалось использовать DbEntityProvider / DbEntitySession и AttributeMapping / XMLMapping, импортированные в Subsonic из IQToolkit, чтобы обеспечить лучшую поддержку отображения сущностей и таблиц в класс.

2 голосов
/ 14 декабря 2009

L2S прекрасно работает с компактной рамкой. Вы не можете использовать дизайнер перетаскивания, однако. Вам нужно будет запустить SQLMetal.exe самостоятельно, чтобы сгенерировать классы для вас.

SQLMetal.exe : http://msdn.microsoft.com/en-us/library/bb386987.aspx

Пример с Northwind compact : http://blogs.msdn.com/sqlservercompact/archive/2007/08/21/linq-with-sql-server-compact-a-ka-dlinq-over-sql-ce.aspx

Другой пример с множеством картинок : http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx

0 голосов
/ 28 мая 2013

Вы уже проверили Kea - Linq для Sql Compact & Compact Framework ?

http://kea.codeplex.com/

0 голосов
/ 16 декабря 2009

Это хороший вариант генерации из простых классов POCO файла dbml, работающих с LINQ 2 SQL. Пока не проверено, но, кажется, обещано.

http://www.codeplex.com/ULinqGen

0 голосов
/ 15 декабря 2009

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

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

Я не знаю, можно ли создавать объекты из уже существующей базы данных с XPO.

...