2009-08-14 6 views
0

J'ai passé la matinée à essayer de comprendre où se trouve l'espace de noms system.linq.expressions. Voici ce que je faisais:Espaces de noms Linq manquants (Linq à sql, structure compacte)

  1. Dans VS 2008, créez un nouveau C#/Smart Device/Windows Mobile 6 Professional SDK/CF .NET v3.5/Bibliothèque de classes

  2. Utilisé SqlMetal (en Program Files/Microsoft SDKs/Windows/v6.0A/Bin) pour générer le contexte de données.

  3. Ajout du fichier de contexte de données .cs dans le projet.

  4. Compile et de nombreuses erreurs pour les espaces de noms manquants: System.Data.Linq, System.Data.Linq.Mapping, System.Linq.Expressions

  5. Après quelques recherches ajouté System.Data.Linq.dll en c : \ Program Files \ Assemblys de référence \ Microsoft \ Framework \ v3.5 (La dll n'était pas directement listée quand j'ai choisi d'ajouter une référence et j'ai utilisé l'onglet "browse" pour finalement trouver celui qui correspond au framework normal)

  6. Compilez à nouveau, moins d'erreurs, mais l'espace de noms System.Linq.Expressions est toujours manquant.

Le document dit System.Linq.Expressions est en System.Core.dll, mais il semble que mon System.Core.dll (situé dans Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE) contient beaucoup moins d'espace de noms que le document dit.

Merci d'avance!

Répondre

4

Le Compact Framework ne prend pas en charge LINQ to SQL. Tous les objets du documentation for System.Data.Linq le confirment en étant complètement dépourvu de l'icône "supporté dans la CF". Par exemple, regardez the docs for DataTable, ce qui est pris en charge. Vous verrez une petite icône par chaque méthode/propriété supportée. Vous ne pouvez pas "ajouter" du support en référençant simplement un assemblage de bureau comme vous l'avez fait dans votre étape 5. Les FC ne peuvent pas consommer des assemblages de structure complets, pour diverses raisons.

0

La génération de code dynamique (Reflection.Emit) n'est pas disponible dans NETCF. Ce que cela signifie, c'est que beaucoup de fonctionnalités qui en dépendent ne sont pas disponibles, ce qui inclut DLR (dyanmic language runtime et donc des langages comme IronRuby), Linq-to-SQL/

0

Si vous voulez juste les Linq.Expressions et vous faites vos propres trucs avec ça, c'est-à-dire que vous n'essayez pas de faire fonctionner linq to sql alors vous pouvez utiliser les trucs System.Linq.Expression des gars de db4o. Je l'utilise sur mon projet en utilisant linq pour les objets. db4o linq implementation