缺少Linq命名空间(Linq to sql,compact framework)

时间:2009-08-14 16:57:35

标签: linq-to-sql windows-mobile compact-framework

我今天早上花了很多时间来弄清楚system.linq.expressions命名空间的位置。以下是我的所作所为:

  1. 在VS 2008中,创建新的C#/智能设备/ Windows Mobile 6 Professional SDK / .NET CF v3.5 /类库

  2. 使用SqlMetal(在Program Files / Microsoft SDKs / Windows / v6.0A / Bin中)生成数据上下文。

  3. 将数据上下文.cs文件添加到项目中。

  4. 为缺少的命名空间编译和许多错误:System.Data.Linq,System.Data.Linq.Mapping,System.Linq.Expressions

  5. 经过一些研究,在c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5中添加了System.Data.Linq.dll(当我选择添加引用并且我使用时,dll没有直接列出“浏览”选项卡最终找到了一个,这是正常的框架)

  6. 再次编译,减少错误,但仍缺少System.Linq.Expressions命名空间。

  7. 该文档说System.Linq.Expressions在System.Core.dll中,但似乎我的System.Core.dll(位于Program Files \ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE中)包含的内容少得多命名空间比文件说的那样。

    提前致谢!

3 个答案:

答案 0 :(得分:4)

Compact Framework不支持LINQ to SQL。 documentation for System.Data.Linq中的所有对象都完全没有“CF中支持”图标来确认这一点。例如,查看支持的the docs for DataTable。您将看到每个受支持的方法/属性的小图标。

您不能像在步骤5中那样简单地引用桌面装配来“添加”支持。出于各种原因,CF无法使用完整的框架装配。

答案 1 :(得分:0)

动态代码生成(Reflection.Emit)在NETCF中不可用。这意味着很多依赖于此的功能都不可用,这包括DLR(动态语言运行时和IronRuby等语言),Linq-to-SQL /

答案 2 :(得分:0)

如果你只是想要Linq.Expressions并且你正在使用它自己的东西,即不想让linq到sql工作,那么你可以使用db4o人员的System.Linq.Expression。 我在使用linq到对象的项目中使用它。 db4o linq implementation