自动创建表 ServiceStack.OrmLite

Auto Create Tables ServiceStack.OrmLite

刚开始使用 Servicestack 和 Ormlite (SqlServer)。我正在寻找一种方法来自动创建表(如果它们不存在)。我发现:

CreateTableIfNotExists<T>

这很酷,但是有没有办法实现一个 'located' 和自动创建的接口,或者有一种方法可以将它们注入某个地方以自动创建它们?

实现类似的东西会很简单我只是不想重新发明轮子,如果它已经存在的话。

OrmLite 是一个代码优先的 POCO ORM,它不需要任何基础 类 或接口,所以基本上取决于您的应用程序应该在 OrmLite 中使用哪个 POCO 来创建 RDBMS 表。

您可以通过查找具有显式 [AutoIncrement][PrimaryKey] 属性的 POCO 自行实现。 (两者都不是严格要求的,因为 OrmLite 还假定 Id 属性 也定义了主键)。

看起来像:

var tables = assembly.GetTypes()
    .Where(x => x.GetProperties()
        .Any(p => p.HasAttribute<AutoIncrementAttribute>() ||
                  p.HasAttribute<PrimaryKeyAttribute>()))
    .ToArray();

db.CreateTableIfNotExists(tables);

我个人不会这样做,因为我认为明确和声明应该创建哪些表很重要,它还可以作为一个参考点,其中列出了您的应用程序中使用的所有表,使您能够使用 Ctrl + Click(在 R# 中)轻松导航到每个表的定义。