我正在尝试使用命令“ 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”具有与我可以迁移的先前模型相同的文件权限。
还有其他人遇到同样的问题吗?感谢帮助!
答案 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
创建了正确的迁移文件。我最终还是要在控制器中使用托管对象,但是我当时还没有,我想先生成迁移文件。