2009-01-21 70 views
1

我想在我正在建設的應用程序中使用SubSonic(2.2),因爲我喜歡它的簡單性,它處理我可以預見的任何類型的查詢需要。同時,我想讓應用程序的上層與亞音速類型分離。我只想返回普通舊C#對象,並通過POCO進行保存。SubSonic數據層返回POCOs而不是SubSonic的ActiveRecord對象

但這裏有一個問題:我希望我的POCO具有基於FK關係的Child集合和父對象的Lazy加載屬性。我想我需要以某種方式將一個Subsonic SqlQuery對象放在我的POCO上的一個私有成員中,並在getter的內部使用它來獲得一個延遲加載的屬性。

有關如何使用SubSonic專門實現此任何想法?任何人之前做過?

我的確意識到SubSonic的下一個主要版本會做這個開箱即用的功能,但看起來至少需要幾個月的時間。

回答

0

無法想出一個很好的方法來做到這一點。亞音速3看起來非常好,並會解決問題,但同時我們只是went with NHibernate

1

您可以使用屬性:

tableBaseClass = 「RepositoryRecord」

我怕我不知道該如何處理,雖然延遲加載。你可以看到Rob Conery's post瞭解更多詳情。

+0

我實際上已經嘗試過這個選項,但RepositoryRecord是一個SubSonic的東西,因此我仍然會連接到Subsonic。 我也嘗試指定我自己的基類作爲'tableBaseClass',但這並沒有工作,因爲我從生成的文件得到了很多構建錯誤。 – NathanD 2009-02-03 17:14:48

0

你想要的不是版本2.x.您可能可以通過編輯模板獲得大部分途徑(我有一些惰性加載屬性的示例on my blog)。另一種選擇是建立你的pocos,然後建立類來從SubSonic生成的類和查詢映射到你的模型。

2

我在SubSonic中使用RepositoryRecord,它大多是「poco」。然後我爲那些在選擇屬性時加載其他類的類進行部分分析。

Partial Public Class Book 

Private _Author as Database.Author 
Property Author() as Database.Author 
    Get 
    If _Author is nothing then 
     ' Load the author class here. 
    End if 
    return _Author 
    End get 
    Set 
    .... 
    End Set 
End Property 
End Class