【问题标题】:Connecting to wrong database连接到错误的数据库
【发布时间】:2011-02-03 15:49:05
【问题描述】:

环境 .NET 3.5 自助服务 LLBL Pro 2.6

我知道我在这里可能会做一些愚蠢的事情。我有以下代码

string connectionString = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
        DbUtils.ActualConnectionString = connectionString;


        PersonCollection ps = new PersonCollection();
        ps.GetMulti(new PredicateExpression(Person.Lastname == "lastname" ));
        Console.WriteLine(pt.Count);

现在,当我从 LLBL Studio 生成实体时,我使用了一个名为 ForGeneratingLLBL 的数据库,但在 app.config 中,连接字符串指向另一个数据库 Master 。我的期望是该程序将从 DbUtils.ActualConnectionString 中定义的任何内容(在本例中定义在 app.config 中)中检索数据,但由于某种原因,它仍然从 ForGeneratingLLBL 中检索数据。知道我在这里做错了什么吗?

PS:我也在LLBL论坛发过这个问题,想看看有没有人遇到过类似的问题

【问题讨论】:

  • 这是 LLBLGen 的陷阱之一...为什么他们在生成的实体中硬编码数据库名称?不确定,性能或安全性...绝对不是直观...尝试了很多其他 ORMS 并且从未遇到过这样的事情。

标签: c# llblgen


【解决方案1】:

如果您的数据库与您生成的实体不同,则需要将其放入配置文件中:

<configuration>
  <configSections>
    <section name="sqlServerCatalogNameOverwrites" type="System.Configuration.NameValueSectionHandler"/>
  </configSections>
</configuration>

还有这个:

<sqlServerCatalogNameOverwrites>    
    <add key="OriginalDatabase" value="TargetDatabase" />
  </sqlServerCatalogNameOverwrites>

documentation 下的目录名称覆盖

【讨论】:

  • 我正在做类似的事情(略有不同),但请确保我理解它。所以从我的例子中,我应该有 吗?
  • 好的,所以我使用了上面提供的示例,它运行良好,但这意味着我必须在 sqlServerCatalogNameOverwrites 和 connectionStrings 下提供此目标数据库名称两次,对吗?
  • 实际上只是将原始数据库名称设置为空字符串也可以。
猜你喜欢
  • 2012-10-29
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2018-07-09
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多