2009-12-14 38 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