ServiceStack.OrmLite バージョン 3.9.71 を使用しており、特定のテーブル名でテーブルを作成したいと考えています。だから私は次のようなものが欲しい
db.CreateTable<TableType>("Table Name");
次の関連する質問を見つけましたが、新しいバージョンを使用しているようです。
ServiceStack.OrmLite バージョン 3.9.71 を使用しており、特定のテーブル名でテーブルを作成したいと考えています。だから私は次のようなものが欲しい
db.CreateTable<TableType>("Table Name");
次の関連する質問を見つけましたが、新しいバージョンを使用しているようです。
私はこれを行う方法を考え出しました。v3 には、GetModelMetaData と同じことを行う GetModelDefinition というメソッドがあるため、答えCreate table with custom name dynamic 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; });
}
}