2011-03-22 52 views
0

我使用subsonic v.3在我的ASP.NET應用程序中使用VB.NET生成DAL層(.NET framework 3.5 )。 我已經使用了subsonic v.2和i,它爲每個表和事件創建一個單獨的.cs文件,每個類文件都有一個名爲LoadByParam()或LoadByKey()的方法,以防萬一想通過傳遞來加載對象一些字段值。如何使用subsonic 3.0爲db中的每個表創建單獨的文件(.vb或.cs)

但在亞音速3當我添加核心文件,並在我的項目中添加T4模板,它的生成三種VB文件名爲activrecord.vb,context.vb和struct.vb

我想知道我可以加載所有在亞音速 如何通過傳遞一些字段作爲字段加載數據庫對象 即亞音速2.0時,列名,字段值); 我怎樣才能達到亞音速3.0?

回答

0

如果你問我,我會添加一個C#類庫到你的項目並用於你的DAL,因爲C#有一個更廣泛的用戶羣,因此更多的測試。 VB和C#的工作完美地結合在一起的解決方案

這表示,最新的C#模板已經創建單獨的文件:https://github.com/subsonic/SubSonic-3.0-Templates/tree/master/ActiveRecord

我想沒有人遷移代碼vb.net大氣壓。

關於第二個問題(如何通過列名加載對象),subsonic 3大量使用lambda表達式,因此您只需使用帶有表達式(Func(of User,Boolean))的重載)

換句話說:

dim user1 as new User(Function(x) x.UserName = "Test") 

dim user2 as User = User.SingleOrDefault(Function(x) x.UserName = "Test") 

甚至

dim user3 as User = (From u in User.All() 
        Where u.UserName = "Test" 
        Select u).SingleOrDefault() 

最後兩個返回一個User對象或Nothing。 即使用戶不存在,第一個總是返回一個對象,所以如果需要,您必須檢查 user1.IsNew()。

+0

thnx SchlaWiener這正是我正在尋找的,現在我會嘗試使用新的** lambda **表達式,並嘗試給我們C#DAL庫,因爲它已經爲我的數據庫中的每個對象單獨生成文件。 thnx – MrPandav 2011-03-23 06:14:56

+0

btw。我發現c#更適合linq/lambda。 'var u = new User(x => x.UserName ==「Test」)'看起來更具可讀性,var關鍵字不錯,因爲'dim u = new User()'讓你成爲一個對象而不是用戶對象。所以你總是必須在聲明中指定類型,這可能會在linq上下文中導致非常長的聲明。 – 2011-03-23 10:27:12

相關問題