ServiceStack.OrmLite使用表名创建表

时间:2015-06-24 01:31:22

标签: sql-server servicestack-bsd

我正在使用ServiceStack.OrmLite版本3.9.71,我想创建具有特定表名的表。所以我希望有类似于以下的内容

db.CreateTable<TableType>("Table Name");

我找到了以下相关问题,但看起来它使用的是较新版本。

Create table with custom name dynamically and insert with custom table name

1 个答案:

答案 0 :(得分:1)

我已经想出了如何做到这一点。 v3有一个名为GetModelDefinition的方法,它和GetModelMetaData一样,所以我修改了答案Create table with custom name dynamically and insert with custom table name中的类。

以下是我正在使用的最后一堂课

public static class GenericTableExtensions
{
    static object ExecWithAlias<T>(string table, Func<object> fn)
    {

        var modelDef = SqlServerOrmLiteDialectProvider.GetModelDefinition(typeof(T));
        lock (modelDef)
        {
            var hold = modelDef.Alias;
            try
            {
                modelDef.Alias = table;
                return fn();
            }
            finally
            {
                modelDef.Alias = hold;
            }
        }
    }
    public static void CreateTable<T>(this IDbConnection db, string table) where T: new()
    {
        ExecWithAlias<T>(table, () => { db.CreateTable<T>(); return null; });

    }

}