我有一个基于Chris Hammond,Christoc,模块模板的项目。我有大量的代码用于访问外部数据库的数据。在我的存储库中,我将数据库从默认值更改为我需要的特定对象。我这样做的代码如下:
using (IDataContext ctx = DataContext.Instance(MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY))
{
var rep = ctx.GetRepository<Product>();
products = rep.Get().ToList();
}
默认数据库在调用.Instance().
时切换。我的自定义DNN模块使用存储库。存储库是包含多个自定义模块的解决方案的一部分。当我使用DNN的Extensions部分编译和安装时,一切都运行良好。在上面的代码中,MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY
位于我的模块解决方案的MyModuleSettingsBase.cs文件中。它被设置为一个简单的字符串,如&#34; ProductDatabase&#34;。在基本DNN安装(不是模块解决方案)的解决方案中,在web.config文件中,<connectionStrings>
中的值为name="ProductDatabase"
,其中包含实际的连接字符串。这一切都在DNN网站上很好地链接。
现在我正在编写一个控制台应用程序来对网站进行一些监控。我想访问数据库以检查产品表中的值。我想重用我编写的所有存储库代码。为了尝试这样做,我添加了对MyModules.dll文件的引用,所以我只有一个基本代码的副本。这可以让我访问所有对象和相关的存储库,但是当我尝试查询数据时,它会失败。调试时我可以看到它在线路上失败了:
using (IDataContext ctx = DataContext.Instance(MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY))
在调试器中查看时,字符串值MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY
已正确设置为&#34; ProductDatabase&#34;但代码无法将其与实际连接字符串链接。从控制台应用程序运行时,我不知道从哪里检查连接字符串。我试图将<connectionStrings>
部分放入我的App.config文件中,但这并没有成功。
是否可以将MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY
映射到引用DLL的外部应用程序中的连接字符串?
如果是这样,我在哪里可以设置连接字符串的值,使其与MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY
中存储的键值匹配?
答案 0 :(得分:1)
3个月前我遇到过类似的问题,当时我想在我的控制台应用程序中使用DNN核心库但是我失败了。
我将我的疑问放在DNN官方论坛网站上,得到了Wes Tatters(DNN MVP)的有效回复。
以下是帖子链接:Reference URL
根据您的监控要求,我建议您创建DNN Schedule Application。您可以在DNN(主机 - &gt; AdvancedSettings-&gt;计划)中安排它,甚至可以在该计划应用程序中使用您的存储库(DNN库)。
我希望它能解决你的问题。如果您有任何问题,请告诉我。