Linq to sql StructureMap和LINQ到SQL连接字符串

Linq to sql StructureMap和LINQ到SQL连接字符串,linq-to-sql,structuremap,Linq To Sql,Structuremap,我目前正在使用包装器类为我的linq to sql数据上下文设置连接字符串,以便将连接字符串传递到生成的DataContext构造函数中: public class DB : GeneratedDataContext { public DB() : base(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString) { } } 然后,我的LinqToSql存储库实现直接与DB类一

我目前正在使用包装器类为我的linq to sql数据上下文设置连接字符串,以便将连接字符串传递到生成的DataContext构造函数中:

    public class DB : GeneratedDataContext {
    public DB() : base(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString) { }
}
然后,我的LinqToSql存储库实现直接与DB类一起工作

我正在使用StructureMap,我想知道这是否是最好的方法,也就是说,我应该在存储库中使用连接字符串参数作为构造函数,并在StructureMap引导程序中设置此参数吗

谢谢,
Ben

对您的问题的简短回答:是的,structuremap应该处理db连接的配置

我使用类似的东西向structuremap注册我的datacontext

ForRequestedType<MyDataContext>()
    .CacheBy(StructureMap.Attributes.InstanceScope.Hybrid)
    .TheDefault.Is.ConstructedBy(
         () => 
         new MyDataContext(ConfigurationManager
                               .ConnectionStrings["MyConnectionString"]
                               .ConnectionString)
         );
ForRequestedType()
.CacheBy(StructureMap.Attributes.InstanceScope.Hybrid)
.TheDefault.Is.ConstructedBy(
() => 
新建MyDataContext(配置管理器
.ConnectionString[“MyConnectionString”]
.连接字符串)
);

这样,您的datacontext也不需要包装器。

太好了,谢谢。我的存储库当前调用数据上下文包装器上的无参数构造函数。因此,如果我实现了您的建议,我如何在我的存储库中实例化数据上下文的新实例(因为它们期望将连接字符串传递到构造函数中)?Thanks@Ben您的存储库不应该创建datacontext的新实例,它们应该由StructureMappok注入,我理解。这就像是在。还有一个问题,我正在使用原子方法来更新方法(实例化一个新的数据上下文,并包装在一个经过适当处理的using语句中)。我应该继续这样做吗?@Ben datacontext足够轻量级,使其成为一种合理的方法(你是说更像一种工作单元模式吗?)。如果您正在这样做,您可能需要考虑将DATACONTrimeFi工厂注入到存储库中。理想情况下,您希望避免在存储库代码中出现
新的
,也不希望通过在其中调用ObjectFactory将其直接耦合到StructureMap。谢谢。我很高兴为我的read方法注入数据上下文,但是是的,我希望在任何写操作中使用工作单元方法,因此将考虑为此使用工厂。谢谢你的帮助。