2009-12-14 27 views
5

即将为我创建的新解决方案设计我的数据访问。尽管该解决方案包含Compact Framework Device Application和桌面以外的库。所有.NET 3.5。桌面将基本处理所有的数据访问。我也需要CF中的Data Objects,桌面将与SQL通信,然后与Mobile通信,并提供相应的数据...LINQ到精简版框架中的SQL语句

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

基本上支持CF的ORM会完成这项工作!但我不知道我会遇到任何不兼容的情况。

回答

2

L2S在紧凑的框架下工作良好。不过,您不能使用拖放式设计器。您需要自己运行SQLMetal.exe来为您生成类。

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

例与罗斯文紧凑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

我不需要用我的桌面应用程序的SQL CE数据库,我只需要从表生成类,似乎我会用手使这个.... – 2009-12-14 15:40:41

+0

您可以运行SQLMetal得到数据存储中的对象,然后编辑生成的* .cs文件。 – 2009-12-14 16:19:07

+0

这是一个选项。我应该把所有的EntitySet和EntityRef改成通用集合。 – 2009-12-14 19:21:26

0

你可以使用的DevExpress持久性对象(XPO )在紧凑的框架。我之前使用过它,但发现它对于我的目的(数据收集应用程序)有些缓慢。

在紧凑框架中无法找到大部分内容的原因是速度通常对设备应用程序非常重要,因此数据访问代码通常是手动完成的。

我不知道你是否可以使用XPO创建已经存在的数据库中的对象。

+0

谢谢你的提议。 – 2009-12-15 11:36:20

3

我已经能够修改SubSonic 3.0System.Linq.Expressions从Mono项目添加缺少Queryable源后db4o的/有Mainsoft端口,并在Codeplex马特·沃伦的IQToolkit提供L2S等同于CF.

虽然Linq表达式树在.NET CF 3.5上不受支持,但这与它所需要的有关。

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

+0

我认为这将支持从dbml文件复制生成的对象,但我没有这种知识。什么关于System.Data.Linq?在那里有EntitySet <> EntityRef <>二进制数据类型和我认为的所有属性。如果我能支持这些,我想我不会为这些设备手动编写Business Objects。非常好的帖子,但。 – 2009-12-16 09:53:12