渡槽框架不会产生迁移

时间:2018-07-03 06:33:38

标签: dart aqueduct

我正在尝试使用命令“ aqueduct db generate”从模型生成迁移。

这是lib>模型下的模型“ request.dart”(在这里,我还有其他模型,这些模型已经迁移而没有任何问题):

  

导入'package:dbapi / dbapi.dart';

     

类请求扩展了ManagedObject <_Request>实现_Request {}

     

类别_Request {

     

@managedPrimaryKey

     

int索引;

     

字符串描述;

     

}

但是,由于无法识别新模型“请求”,因此正在创建一个空迁移。下面是“ aqueduct db generate”的输出

-- Aqueduct CLI Version: 2.5.0+1
-- Aqueduct project version: 2.5.0+1
-- Replaying migration files...
Replaying version 1
Replaying version 2
Replaying version 3
 -- The following ManagedObject<T> subclasses were found:
     Question
     UserProfile

* If you were expecting more declarations, ensure the files are visible in the application library file.

  -- Created new migration file (version 4).

注意:新模型“ request.dart”具有与我可以迁移的先前模型相同的文件权限。

还有其他人遇到同样的问题吗?感谢帮助!

2 个答案:

答案 0 :(得分:3)

文件request.dart必须由应用程序的库文件(直接或传递)导入。您的情况是dbapi.dart

但是,不太可能直接将request.dart导入库文件中。相反,您的库文件已经导入了RequestSink文件,该文件必须导入应用程序使用的所有控制器文件,而这些文件也必须导入其使用的任何模型。

这里可能的情况是您尚未在代码中使用此类-一旦在控制器或服务中开始使用该类,迁移生成工具将可以看到该类。否则,您可以直接从您的请求接收器文件中导入它。

答案 1 :(得分:0)

正如Joe Conway所说,我必须将ManagedObject子类导入到我的控制器中:

import 'package:my_project/model/my_model.dart';

比运行之后

aqueduct db generate

创建了正确的迁移文件。我最终还是要在控制器中使用托管对象,但是我当时还没有,我想先生成迁移文件。