2012-03-07 40 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

相關問題