StructureMap和LINQ to SQL连接字符串
问题描述:
我目前用的包装类设置为我的LINQ to SQL数据上下文的连接字符串,这样我可以通过一个连接字符串到生成的DataContext构造函数:StructureMap和LINQ to SQL连接字符串
public class DB : GeneratedDataContext {
public DB() : base(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString) { }
}
我的LinqToSql存储库实现可以直接与数据库类一起工作。
我正在使用StructureMap,并想知道这是否是最好的方法,也就是说,我应该将连接字符串参数作为构造函数存储在我的存储库中,并将此参数设置在我的StructureMap引导程序中?
感谢, 本
答
简短的回答你的问题:是的,应该structuremap处理您的数据库连接的配置。
我用这样的事情与structuremap
ForRequestedType<MyDataContext>()
.CacheBy(StructureMap.Attributes.InstanceScope.Hybrid)
.TheDefault.Is.ConstructedBy(
() =>
new MyDataContext(ConfigurationManager
.ConnectionStrings["MyConnectionString"]
.ConnectionString)
);
这样注册我的datacontext,您将不再需要为您的DataContext的包装无论是。
太好了,谢谢。我的存储库目前在我的数据上下文封装器上调用无参数构造函数。所以如果我实现你的建议,我如何在我的仓库中实例化数据上下文的新实例(因为他们期望连接字符串被传递给构造函数)?谢谢 – 2010-03-09 19:37:57
@Ben你的存储库不应该创建你的datacontext的新实例,他们应该被注入结构图 – Kirschstein 2010-03-10 09:47:42
好吧,我明白了。所以这就像http://weblogs.asp.net/shijuvarghese/archive/2008/10/10/asp-net-mvc-tip-dependency-injection-with-structuremap.aspx中的例子。 然后有一个问题,我正在使用原子方法来更新我的更新方法(实例化新的数据上下文,并在使用语句中进行封装以便正确放置)。我应该继续这样做吗? – 2010-03-10 11:26:31