SubSonic SimpleRepository和Dependency Injection

时间:2009-07-31 19:37:44

标签: c# dependency-injection subsonic

有点学习曲线。知道你们其中一位大师可以帮助我。

我正在研究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。

我是否太复杂了?或者我在这里走在正确的轨道上。我知道你不知道所有其他的细节,所以在一般情况下跟我说话。感谢。

1 个答案:

答案 0 :(得分:1)

我认为你错过了DI的核心思想之一。这个想法是使用接口从实际实现功能的具体类中抽象出调用代码。

public interface IDataRepository { }

internal class DataRepository : SimpleRepository, IDataRepository
{
}

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

现在所有客户端代码都应该只解析/引用IDataRepository接口。