2009-07-31 131 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接口。