Compact Framework中的LINQ to SQL

时间:2009-12-14 15:12:38

标签: linq-to-sql orm compact-framework c#-3.0

我正在为我创建的新解决方案设计我的数据访问。该解决方案虽然包含Compact Framework Device Application和除Desktop之外的库。所有.NET 3.5。桌面基本上将处理所有数据访问。我也需要数据对象在CF中,桌面将与SQL通信,然后与移动设备进行通信并提供相应的数据......

我喜欢LINQ,更喜欢LINQ 2 SQL。那里有很多炒作,我不会购买关于推荐EF的内部微软政治。目前,EF太沉重,太复杂,无法选择它,除了它还在不断发展,EF 4将在几个月后发生重大变化。但我不能等待几个月来像这里的每个开发人员一样创建一个项目,我现在想要一些东西!之后说我想使用LINQ 2 SQL,我的问题是我不能只复制生成的dbml并使用生成的类。我不需要DataContext,因为我不打算在移动应用程序的数据库上使用CRUD或任何操作。我只想要对象。有没有人遇到过这样的情况?重点不在于手工编写表示表的所有类。因为我需要它们来进一步操作LINQ to Objects。

基本上支持CF的ORM可以胜任这项工作!但我不知道我会遇到任何不兼容性。

5 个答案:

答案 0 :(得分:3)

我添加了缺少的SubSonic 3.0来源后,从Mono项目中修改了System.Linq.ExpressionsQueryable的db4o / Mainsoft端口,以及Matt Warren的IQToolkit在Codeplex上提供CF的L2S等价物。

这是关于它需要什么,因为.Net CF 3.5不支持Linq表达式树。

我能够使用从IQToolkit导入到Subsonic的DbEntityProvider / DbEntitySession和AttributeMapping / XMLMapping来提供更好的实体和表到类映射支持。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您可以在紧凑框架上使用DevExpress持久对象(XPO)。我以前使用它但发现它对我的目的来说有点慢(数据收集应用程序)。

在紧凑型框架上找不到这些的原因是速度通常对设备应用程序非常重要,数据访问代码通常是手动完成的。

我不知道您是否可以使用XPO从现有数据库创建对象。

答案 3 :(得分:0)

这是从使用LINQ 2 SQL的dbml文件普通POCO类生成的一个很好的选项。尚未测试,但似乎承诺。

http://www.codeplex.com/ULinqGen

答案 4 :(得分:0)

你有没有签出 Kea - Linq for Sql Compact&紧凑框架

http://kea.codeplex.com/