在运行时在 app_data 文件夹中添加 SQL 服务器 CE 文件

Adding SQL Server CE files in app_data folder at runtime

我正在使用启用了多租户的 Orchard CMS。每个租户在 App_data 文件夹中都有自己的 SQL Server CE 数据库。当应用程序处于 运行 时,我通过将租户数据从其他位置复制到 App_Data 文件夹来创建新租户。

问题是,如果我点击租户,它 .sdf 没有加载,我得到一个错误

The page you are looking doesn't exist

如果我重新启动 IIS,它就会开始工作。我的猜测是,如果我们在 app_data 文件夹中添加任何内容,而应用程序是 运行,则此数据不会加载到 w3wp 进程中。这个问题有解决办法吗?

首先我想说这听起来有点有趣,我们应该说,做事的方式。此外,SQL CE 对于生产来说并不是那么好。

无论如何,我也有一些关于租户创建的问题。检查 cache.dat,其中包含所有租户的列表,可能需要刷新它。我还必须刷新租户才能工作:

// refresh tenant because otherwise it stays in setup mode
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant == null) return HttpNotFound();
tenant.State = TenantState.Disabled;
_tenantService.UpdateTenant(tenant);

var tenant2 = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant2 == null) return HttpNotFound();
tenant2.State = TenantState.Running;
_tenantService.UpdateTenant(tenant2);

尽管看起来很迟钝,但它解决了我的问题。

我仍然建议使用 Orchard 的 API 构建租户。祝你好运!