【问题标题】:SubSonic and not default connection string problemSubSonic 而非默认连接字符串问题
【发布时间】:2009-11-23 08:29:03
【问题描述】:

我在我的程序中遇到了错误,因为 SubSonic3 在

中返回带有默认连接字符串的记录
SingleOrDefault(ByVal expression As System.Linq.Expressions.Expression(Of System.Func(Of Company.filter, Boolean)), ByVal connectionString As String, ByVal providerName As String)

在 Subsonic 资源中,Database.cs 第 323 行:

instance = Activator.CreateInstance<T>();

我认为这是我的问题的原因。它使用默认构造函数创建实例,然后将其作为结果返回,这就是我们丢失自定义连接字符串的地方。

我个人通过在具有 connectionString 参数的 SingleOrDefault 函数中向 ActiveRecord.tt 模板添加 2 行来修复它:

            single._db=new <#=Namespace#>.<#=DatabaseName#>DB(connectionString, providerName);
            single._repo = new SubSonicRepository<<#=tbl.ClassName#>>(single._db); 

但我认为你应该更深入地研究这个问题,Rob :)

【问题讨论】:

    标签: subsonic subsonic3


    【解决方案1】:

    我不关注。您指定 ConnectionString 的名称是 Settings.tt - 这是我们使用的名称。

    【讨论】:

    • 是的,但它是默认连接字符串。并且使用自定义 ConnectionString 参数调用的 SingleOrDefault 函数返回记录,该记录指向错误的数据库。例如,我有几个数据库,它们具有相同的结构,但它们分别使用。假设我有 Company1 和 Company2 数据库。如果我使用 record.SingleOrDefault(x => x.name="joe", GetConnectionStringForCompany2, ProviderName) 它将返回指向 Company1 数据库的记录对象,但我传递了 Company2 数据库的连接字符串。我希望这能说明情况。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2011-09-20
    • 2010-10-19
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多