2009-12-14 5 views
5

Je suis sur pour concevoir mon accès aux données pour une nouvelle solution que je crée. Cette solution contient cependant des applications Compact Framework Device et des bibliothèques autres que Desktop. Tous .NET 3.5. Desktop va gérer tous les accès aux données essentiellement. J'ai besoin des objets de données d'avoir dans CF aussi, Bureau communiquera avec SQL, puis avec Mobile et donner les données appropriées ...LINQ à SQL dans le cadre compact

I love LINQ, et plus je l'aime LINQ 2 SQL. Il y a beaucoup d'exagération là-bas et je n'achète pas de politique interne de Microsoft sur la recommandation d'EF. Pour l'instant EF est trop lourd et trop complexe pour que quelqu'un puisse le choisir en plus d'évoluer encore et EF 4 aura des changements majeurs quand il arrivera dans quelques mois. Mais je ne peux pas attendre des mois pour créer un projet comme tous les développeurs ici, je veux quelque chose maintenant! Après cela dit que je veux utiliser LINQ 2 SQL, mon problème est que je ne peux pas copier le dbml généré et utiliser les classes générées. Je n'ai pas besoin du DataContext car je n'ai pas l'intention d'utiliser CRUD ou d'opérations sur une base de données avec l'application mobile. Je veux juste les objets. Quelqu'un est-il jamais venu dans une telle situation? L'essentiel n'est pas d'écrire toutes les classes représentant les tables à la main. Parce que j'ai besoin d'eux pour plus de manipulation de LINQ à objets.

Fondamentalement, un ORM supportant CF ferait l'affaire! Mais je ne connais aucune incompatibilité que je rencontrerais.

Répondre

2

L2S fonctionne très bien avec la structure compacte. Cependant, vous ne pouvez pas utiliser le concepteur de glisser-déposer. Vous devrez exécuter SQLMetal.exe vous-même pour générer les classes pour vous.

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

Exemple avec Northwind compact: http://blogs.msdn.com/sqlservercompact/archive/2007/08/21/linq-with-sql-server-compact-a-ka-dlinq-over-sql-ce.aspx

Un autre exemple, avec beaucoup de photos: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx

+0

Je ne ai besoin en utilisant une base de données SQL CE sur mon application Desktop, j'ai juste besoin pour générer les classes de tableaux, semble que je vais faire cela à la main .... –

+0

Vous pouvez exécuter SQLMetal pour obtenir les objets du magasin de données, puis modifiez le fichier * .cs qui est généré. –

+0

C'est une option. Devrait changer tous EntitySet et EntityRef en collections génériques je suppose. –

0

Vous pouvez utiliser DevExpress objets persistants (XPO) sur un cadre compact. Je l'ai déjà utilisé mais je l'ai trouvé un peu lent pour mon but (application de collecte de données).

La raison pour laquelle vous ne trouvez pas beaucoup de cela sur le cadre compact est que la vitesse est généralement si important pour les applications de l'appareil, que le code d'accès aux données est généralement effectué manuellement.

Je ne sais pas si vous pouvez créer des objets à partir d'une base de données déjà existante avec XPO.

+0

Merci pour votre proposition. –

3

Je suis en mesure de modifier SubSonic 3.0, le db4o/port Mainsoft de System.Linq.Expressions du projet Mono après avoir ajouté les sources Queryable manquantes, et Matt IQToolkit Warren sur CodePlex pour fournir aux FC un équivalent L2S Ceci est à propos de ce qu'il faut, car les arbres d'expression Linq ne sont pas supportés par .Net CF 3.5.

J'ai pu utiliser DbEntityProvider/DbEntitySession et AttributeMapping/XMLMapping importés dans Subsonic depuis IQToolkit pour fournir une meilleure prise en charge de mappage d'entité et de table vers classe.

+0

Je pense que cela aiderait à copier les objets générés à partir du fichier dbml mais je n'ai pas ce genre de connaissance. Qu'en est-il de System.Data.Linq? Il y a les EntitySet <> EntityRef <> Types de données binaires et tous les attributs que je pense. Si je pouvais soutenir ces derniers, je pense que je n'aurai pas à écrire les Business Objects à la main pour les appareils. Très bon post cependant. –

0

Il s'agit d'une bonne option générant à partir de fichiers POCO simples de fichier dbml travaillant avec LINQ 2 SQL. Pas encore testé mais semble promis.

http://www.codeplex.com/ULinqGen

Questions connexes