【问题标题】:StructureMap and LINQ to SQL Connection StringStructureMap 和 LINQ to SQL 连接字符串
【发布时间】:2010-03-09 17:38:10
【问题描述】:

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

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

然后我的 LinqToSql 存储库实现直接使用 DB 类。

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

谢谢, 本

【问题讨论】:

    标签: linq-to-sql structuremap


    【解决方案1】:

    简短回答您的问题:是的,结构映射应该处理您的数据库连接的配置。

    我使用类似这样的东西将我的数据上下文注册到结构映射中

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

    这样,您的数据上下文也不需要包装器。

    【讨论】:

    • 太好了,谢谢。我的存储库当前在我的数据上下文包装器上调用无参数构造函数。因此,如果我实施您的建议,如何在我的存储库中实例化数据上下文的新实例(因为他们希望将连接字符串传递给构造函数)?谢谢
    • @Ben 您的存储库不应该创建数据上下文的新实例,它们应该由结构映射注入
    • 好的,我明白了。所以这就像weblogs.asp.net/shijuvarghese/archive/2008/10/10/… 的例子。那么有一个问题,我正在为我的更新方法使用一种原子方法(实例化一个新的数据上下文并包装在一个 using 语句中,以便正确处理)。我应该继续这样做吗?
    • @Ben datacontext 足够轻量级,使其成为一种合理的方法(您的意思是更像一个工作单元模式吗?)。如果您这样做,您可能需要考虑将 DataContextFactory 注入您的存储库。理想情况下,您希望避免在存储库代码中使用 new,并且您也不希望通过在其中调用 ObjectFactory 直接将其耦合到 StructureMap。
    • 感谢您。我很高兴为我的读取方法注入数据上下文,但是是的,我希望将工作单元方法与任何写入一起使用,因此将考虑为此使用工厂。感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多