2010-03-09 201 views
2

我目前用的包裝類設置爲我的LINQ to SQL數據上下文的連接字符串,這樣我可以通過一個連接字符串到生成的DataContext構造函數:StructureMap和LINQ to SQL連接字符串

public class DB : GeneratedDataContext { 
    public DB() : base(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString) { } 
} 

我的LinqToSql存儲庫實現可以直接與數據庫類一起工作。

我正在使用StructureMap,並想知道這是否是最好的方法,也就是說,我應該將連接字符串參數作爲構造函數存儲在我的存儲庫中,並將此參數設置在我的StructureMap引導程序中?

感謝, 本

回答

3

簡短的回答你的問題:是的,應該structuremap處理您的數據庫連接的配置。

我用這樣的事情與structuremap

ForRequestedType<MyDataContext>() 
    .CacheBy(StructureMap.Attributes.InstanceScope.Hybrid) 
    .TheDefault.Is.ConstructedBy(
     () => 
     new MyDataContext(ConfigurationManager 
           .ConnectionStrings["MyConnectionString"] 
           .ConnectionString) 
     ); 

這樣註冊我的datacontext,您將不再需要爲您的DataContext的包裝無論是。

+0

太好了,謝謝。我的存儲庫目前在我的數據上下文封裝器上調用無參數構造函數。所以如果我實現你的建議,我如何在我的倉庫中實例化數據上下文的新實例(因爲他們期望連接字符串被傳遞給構造函數)?謝謝 – 2010-03-09 19:37:57

+0

@Ben你的存儲庫不應該創建你的datacontext的新實例,他們應該被注入結構圖 – Kirschstein 2010-03-10 09:47:42

+0

好吧,我明白了。所以這就像http://weblogs.asp.net/shijuvarghese/archive/2008/10/10/asp-net-mvc-tip-dependency-injection-with-structuremap.aspx中的例子。 然後有一個問題,我正在使用原子方法來更新我的更新方法(實例化新的數據上下文,並在使用語句中進行封裝以便正確放置)。我應該繼續這樣做嗎? – 2010-03-10 11:26:31