2010-03-09 203 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