使用 servicestack ormlite 动态创建(和 select 从)一个 table
Create (and select from) a table dynamically using servicestack ormlite
我正在使用 C#
,我尝试使用 ServiceStack.OrmLite
创建一个 table,对应于在 中创建的 class 类型运行-time,我搜索了题目,找到了如下解决方案:
在 runtime (employeeType)
中创建类型后,我可以执行以下操作:
db.CreateTableIfNotExists(employeeType);
这将创建 table Employee 对应于(动态创建的类型 "Employee")
然后,使用以下方法:
var typedApi = db.CreateTypedApi(employeeType);
我可以获得一个 TypedApi,它可用于插入、删除、更新动态创建的 Employee table。
事实上,我的问题是我无法从 table "Employee" 中创建一个简单的 select 语句,因为这需要传递一个通用的 type T
我没有,如下:
db.Select<T>(); // T is supposed to be my "employeeType" created dynamically.
是否可以从对应于 运行 时间创建的类型的 table 生成 select?
感谢您的帮助!
OrmLite API 和 SqlExpression 是类型化的,但您可以为您的运行时类型执行自定义 SQL,例如:
var modelDef = employeeType.GetModelMetadata();
var tableName = db.GetDialectProvider().GetQuotedTableName(modelDef);
var sql = $"SELECT * FROM {tableName}";
然后您可以 Select 使用 dynamic result set APIs 之一,例如:
var results = db.Select<List<object>>(sql);
var results = db.Select<Dictionary<string,object>>(sql);
var results = db.Select<dynamic>(sql);
我正在使用 C#
,我尝试使用 ServiceStack.OrmLite
创建一个 table,对应于在 中创建的 class 类型运行-time,我搜索了题目,找到了如下解决方案:
在
runtime (employeeType)
中创建类型后,我可以执行以下操作:db.CreateTableIfNotExists(employeeType);
这将创建 table Employee 对应于(动态创建的类型 "Employee")
然后,使用以下方法:
var typedApi = db.CreateTypedApi(employeeType);
我可以获得一个 TypedApi,它可用于插入、删除、更新动态创建的 Employee table。
事实上,我的问题是我无法从 table "Employee" 中创建一个简单的 select 语句,因为这需要传递一个通用的
type T
我没有,如下:db.Select<T>(); // T is supposed to be my "employeeType" created dynamically.
是否可以从对应于 运行 时间创建的类型的 table 生成 select?
感谢您的帮助!
OrmLite API 和 SqlExpression 是类型化的,但您可以为您的运行时类型执行自定义 SQL,例如:
var modelDef = employeeType.GetModelMetadata();
var tableName = db.GetDialectProvider().GetQuotedTableName(modelDef);
var sql = $"SELECT * FROM {tableName}";
然后您可以 Select 使用 dynamic result set APIs 之一,例如:
var results = db.Select<List<object>>(sql);
var results = db.Select<Dictionary<string,object>>(sql);
var results = db.Select<dynamic>(sql);