2012-03-07 31 views
0

从来就被检查Microsot团结国际奥委会和发现使用代码第一种方法的一些例子。另一方面,我找不到任何教程或配置,以便使用数据库优先方法将Unity IoC与edmx文件一起使用。任何人都可以对此有所了解,我会很高兴。团结MVC3 - 配置使用数据库的第一种方法

我尝试使用http://unitymvc3.codeplex.com/和使用Unity 2.1直接= http://unity.codeplex.com/

抱歉,我不能提供代码,但真正I'm约IOC模式很迷茫,我是不是能够生成一个演示解决方案。 brgds。

回答

3

IoC的仅仅是一个对象的转动而外,使得代替含有内部硬盘引用对象(依赖关系),而不是那些相同的对象被传递到它从外面。内而外的翻页控制的反转,它需要的对象的注入是依赖注入,往往是做你的容器(统一)。

所有IoC容器是相同的,他们有一些方法来注册或发现依赖关系,然后解决参考的方式。大多数决议涉及要求参考FooClass并获得一个对象作为回报。通常你并不真正要求具体的类型,如FooClass,而是要求IFooClass,以便将你的使用与传入的实际类型分开。

所以在你的情况下,你需要注册你的EF数据上下文作为统一的依赖。我之前没有使用过统一,所以请原谅任何小错误。

container.RegisterType<YourContext, YourContext>(); 

给你的类添加一个依赖项。假设你有一个实现IFooRepository的FooRepository。

public FooRepository : IFooRepository 
{ 
    private YourContext context; 

    public FooRepository(YourDataContext context) { 
     this.context = context; 
    } 
} 

在MVC 3您注册统一为默认依赖解析器,这意味着用于控制器通过它被送到所有的请求;现在

protected void Application_Start() 
{ 
    ... 
    var container = new UnityContainer(); 
    container.RegisterType<YourContext, YourContext>(); 
    container.RegisterType<IFooRepository, FooRepository>(); 

    container.RegisterControllers(); 

    DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 
} 

控制器可以添加参数到它的构造函数,并让他们填充。

public class MyController : Controller 
{ 
    private IFooRepository repository; 

    public MyController(IFooRepository repository) { 
     this.repository = repository; 
    } 

} 

当这个控制器实例化它会收到IFooRepository的一个实例,将接收到YourContext参考。这一直贯穿整个链条。

编辑

的EDMX文件就是创建覆盖下一个C#上下文类设计师。单击曲面并查看属性以查看类的名称。

enter image description here

所以,你可以以完全相同的方式与任何其他类对其进行注册。在这种情况下。

container.RegisterType<Model1Container, Model1Container>(); 

希望这会有所帮助。

+0

嗨@Madcapnmckay感谢您的回答。我有一个问题,我不知道如何将我的edmx文件注册为container.registertype ()。我为我的所有IFooclass和Fooclass创建了这些container.registertype,但我不知道如何处理edmx表示。感谢您的帮助提前。 – 2012-03-07 02:30:43

+1

@sebastian_h我编辑了包含更多细节的答案。 – madcapnmckay 2012-03-07 02:57:35

+0

感谢您的编辑。我重新构建了解决方案,并在实体容器名称中包含了该图的名称,但未被intellisense识别出来......我将检查我是否做了其他错误,因为我相信您的方法是正确的路径,但我不知道为什么因为我的解决方案无法正常工作..我会再试一次并写信..非常感谢! – 2012-03-07 05:49:06

相关问题