从类列表中创建一系列SQLite表

本文关键字:一系列 SQLite 创建 列表 | 更新日期: 2023-09-27 18:01:13

我已经生成了一个需要添加到SQLite数据库中的公共类列表。

我得到了像这个这样的类名

private List<Type> types = new List<Type>();
...
var pathName = Directory.GetFiles(string.IsNullOrEmpty(dirPath) ? "SQLClasses" : dirPath);
foreach (var path in pathName)
    types.AddRange(Assembly.LoadFrom(path).GetTypes());

类型现在包含我的类,这些类需要转换为SQLite表。

通常,我会创建这样的表

using (SQLiteConnection sqlCon = new SQLiteConnection(DBPath))
{
     sqlCon.CreateTable<TableName>();

由于我已经有了以类型保存的类列表,我正试图使用简单的foreach 将这些表插入数据库

目前我有这个

foreach(var t in types)
{
    var T = Activator.CreateInstance(t);
    sqlCon.CreateTable<T>();
}

既不是这个也不是更简单的

sqlCon.CreateTable<typeof(t)>();

sqlCon.CreateTable<t>();

功(三个给定的T[或T]在当前上下文中不存在(

我可以使用这个简单的foreach方法插入表名吗?还是必须做一些更复杂的事情?

从类列表中创建一系列SQLite表

答案是CreateTable有两个重载方法

sqlCon.CreateTable<T>();

sqlCon.CreateTable(t);

第二个允许使用类型而不是使用T的泛型类。我不知道第二种方法,直到我在一个网站上注意到一些模糊的参考资料,而不是提到第二种方式,但没有说明它是什么。四处挖掘发现了这个。

我很抱歉没有在早些时候提供更完整的答案