2009-07-31 150 views
1

有點學習曲線。知道你們中的一位大師可以幫助我。SubSonic SimpleRepository和依賴關係注入

我正在研究SubSonic(SimpleRepository)和StructureMap。真的試圖讓我的頭在他們身邊。

我想使用SimpleRepository以方便使用,並讓我的模型定義數據庫,而不是最初創建數據庫結構或創建數據庫結構。

我創建從SimpleRepository

繼承
public class DataRepository : SimpleRepository 
{ 
    public DataRepository() : 
     base("Application", SimpleRepositoryOptions.RunMigrations) 
     { } 
} 

這添加到我的應用程序初始化

ObjectFactory.Initialize(
    x => x.ForRequestedType<DataRepository>() 
     .TheDefaultIsConcreteType<DataRepository>() 
     .CacheBy(InstanceScope.Hybrid)); 

一個具體的類,現在我敢肯定,無處不在的應用程序,我使用相同的SimpleRepository。

我是否讓這個過於複雜?或者我在這裏的正確軌道上。我知道你不瞭解所有其他的細節,所以我也可以在一般情況下對我說。謝謝。

+0

你看過DimeCasts.net http://www.dimecasts.net/Casts/ByTag/StructureMap – Podge 2009-08-05 08:05:30

+0

謝謝Podge。我有。我再看看更多。我一直在使用我上面概述的模型,它一直在尋找。沒有真正的表現擊中我能夠注意到的。應用程序將在接下來的幾周內全面展開,所以我可以從中瞭解更多。 – roberocity 2009-08-12 01:31:34

回答

1

我想你錯過了這裏DI的核心思想之一。該想法是使用接口從具體實現該功能的具體類中抽象調用代碼。

public interface IDataRepository { } 

internal class DataRepository : SimpleRepository, IDataRepository 
{ 
} 

ObjectFactory.Initialize(
    x => x.ForRequestedType<IDataRepository>() 
     .TheDefaultIsConcreteType<DataRepository>() 
     .CacheBy(InstanceScope.Hybrid)); 

現在所有客戶端代碼都應該解析/僅引用IDataRepository接口。