gpt4 book ai didi

c# - 在控制台应用程序中重用 DNN 数据库存储库

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:11 24 4
gpt4 key购买 nike

我有一个基于 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 的扩展部分编译和安装时,一切正常。在上面的代码中,MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY在我的模块解决方案的 MyModuleSettingsBase.cs 文件中找到。它被设置为一个简单的字符串,如“ProductDatabase”。在基本 DNN 安装的解决方案(不是模块解决方案)中,在 web.config 文件中,<connectionStrings> 中有一个值与 name="ProductDatabase"其中包含实际的连接字符串。这一切都在 DNN 网站上正常链接。

现在我正在编写一个控制台应用程序来对网站进行一些监控。我想访问数据库以检查产品表中的值。我想重用我编写的所有存储库代码。为了尝试这样做,我添加了对 MyModules.dll 文件的引用,这样我将只有一份基本代码副本。这可以让我访问所有对象和关联的存储库,但是当我尝试查询数据时它失败了。调试时我可以看到它失败了:

using (IDataContext ctx = DataContext.Instance(MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY)) 

在调试器中查看时,字符串值 MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY已正确设置为“ProductDatabase”,但代码无法将其与实际连接字符串相关联。我不知道从我的控制台应用程序运行时它会在哪里检查连接字符串。我试图放一个 <connectionStrings>部分进入我的 App.config 文件,但这并没有达到目的。

有没有可能MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY映射到引用 DLL 的外部应用程序中的连接字符串?

如果是这样,我在哪里可以设置我的连接字符串的值,使其与存储在 MyModuleSettingsBase.DATABASE_CONNECTION_STRING_KEY 中的键值相匹配?

最佳答案

我在 3 个月前遇到过类似的问题,当时我想在我的控制台应用程序中使用 DNN 核心库,但我失败了。

我在 DNN 官方论坛网站上提出了问题,并得到了 Wes Tatters(DNN MVP)的有效回复。

这是帖子链接:Reference URL

作为你的监控需求,我建议你创建DNN Schedule Application .您可以在 DNN 中安排它(Host->AdvancedSettings->Schedule),甚至好的一点是您可以在该安排应用程序中使用您的存储库(DNN 库)。

我希望它能解决你的问题。如果您有任何问题,请告诉我。

关于c# - 在控制台应用程序中重用 DNN 数据库存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com