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

时间:2014-04-30 15:42:58

标签: c# sqlite reflection system.reflection

我已经生成了一个需要添加到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方法来插入表名吗?还是我必须做一些更复杂的事情?

1 个答案:

答案 0 :(得分:0)

答案是CreateTable有两个重载方法

sqlCon.CreateTable<T>();

sqlCon.CreateTable(t);

第二个允许使用类型而不是使用通用类T.我没有意识到第二种方法,直到我注意到网站上的一些模糊引用而不是提到第二种方法但未能说明它是什么。四处寻找发现了这个。

我很抱歉没有提供更全面的答案