Orchardcms 获取Orchard迁移文件中列的数据类型信息

Orchardcms 获取Orchard迁移文件中列的数据类型信息,orchardcms,orchardcms-1.8,orchard-modules,Orchardcms,Orchardcms 1.8,Orchard Modules,我对迁移有问题。有些网站在Multitennance上迁移正常,有些则不然。所以,现在我必须得到一个一列的类型。是否存在获取数据库数据类型相关信息的方法?大概是这样的: public int UpdateFrom4() { var dType = SchemaBuilder.ExecuteSql(@"select data_type from information_schema.columns where TABLE_NAME = 'MyModule_Orchard_Setti

我对迁移有问题。有些网站在Multitennance上迁移正常,有些则不然。所以,现在我必须得到一个一列的类型。是否存在获取数据库数据类型相关信息的方法?大概是这样的:

public int UpdateFrom4()
{
        var dType = SchemaBuilder.ExecuteSql(@"select data_type from information_schema.columns where TABLE_NAME = 'MyModule_Orchard_SettingsRecord' and COLUMN_NAME = 'SomeColumn'").Interpreter;
        if(dType != "ntext"){
        ...do some alternate of db
或者如何获得nHibernate会话?还是直接访问数据库?但是我不知道通往DB(多天线)的路


非常感谢。

您不能使用
ExecuteSQL()
方法(或者我相信任何迁移命令)将结果返回到代码,因此如果您需要SQL命令的反馈,这是不好的


至于数据库在哪里,这取决于你把它放在哪里!如果您使用的是多租户,则可以转到
房东|管理员|租户
查看您设置的租户的详细信息。连接方法/字符串将在此处列出。如果模式为SQL Server CE,则数据库将位于
App_Data/Sites/{nameoftenat}
文件夹中,但您需要一个工具来打开它。如果使用VisualStudio,最简单的方法是。对于任何其他连接字符串,SQL Server Management Studio都是一个不错的选择。从这里开始,它就可以正常使用SQL了

谢谢。是的,这不是迁移方法中需要结果的好方法。但在迁移过程中出现了一些问题,现在我有三个选择。1) 在编写时手动打开它,但以数百个租户为单位。2) 编写用于修复数据库的应用程序。3) 在迁移方法中获取一些信息,并仅在必要时在DB中进行更改。那么,是否有可能在迁移方法中获得一些关于DB的信息呢?它仍然是.NET代码-您仍然可以打开一个SQLConnection并做自己的事情。你只需要真正确定你在做什么(因为我确信这是“不受支持的”)。例如,如果您打算删除一个小部件的特性添加的表,您需要保证没有小部件的实例添加到层中。必须进行极端的“干运行”测试,并在真正执行之前备份数据库。您需要确保在更正过程结束时,功能的迁移版本在所有租户上都是相同的(假设他们现在都是“正确的”),您完全可以确定需要进行测试。我做到了。并没有什么大不了的,只是扩展了一列的文本数据类型。什么事都没有发生。您可以肯定,它仍然是.NET代码,但正如我在问题中所写的,在迁移方法中,我不知道任何关于具体数据库连接字符串的信息。