因此,我创建了一个天蓝色移动服务,下载了一个项目并运行它。
第一次启动后,我在数据库中看到一些新表:TodoItems
(有 2 项)和_MigrationHistory
。到目前为止,一切都很好。
现在,我想添加一张额外的桌子。
- 我正在制作新模型
MyModel:EntityData { public string MyData { get; set; }
- 制作一个新的控制器
MyModelController:TableController<MyModel>
这是 TodoItemController 的副本,其中TodoItem
被替换为MyModel
- Added
public DbSet<MyModel> MyModels { get; set; }
到 MyProjectContext.cs
- 向 WebApiConfig 添加一行
context.Set<MyModel>().Add(new MyModel{MyData= "test"});
我是不是忘记了什么?
删除所有表格并重新发布并运行我的移动应用程序后,我得到MobileServiceInvalidOperationException例外,我的桌子是空的(甚至TodoItems
是空的)。
EDIT: 我不知道问题的核心在哪里。如果要向移动应用程序添加一行
private IMobileServiceTable<MyModel> myItemsTable = App.MobileService.GetTable<MyModel>();
它会抛出 InvalidOperationException。但MyModels
表存在于数据库中,我可以通过数据库管理器看到它......
EDIT2:
- 好的,我删除了所有附加代码(使用 MyModels)并删除了 db 中的所有表。重新发布移动服务,运行应用程序,我再次看到 2 个表:
TodoItems
(有 2 项)和_MigrationHistory
.
- 现在,我添加了一行
public DbSet<MyModel> MyModels { get; set; }
到 MyProjectContext.cs,删除数据库中的所有表,运行应用程序,现在我看到 3 个表:MyModels
, TodoItems
(有 2 项)和_MigrationHistory
.
- 当我添加行时
context.Set<MyModel>().Add(new MyModel{MyData= "test"});
- 这一刻之后播种出错:我看到 3 张桌子MyModels
, TodoItems
and _MigrationHistory
, but TodoItems
现在是空的。
问题出在了线context.Set<MyModel>().Add(new MyModel{MyData= "test"});
。我忘记初始化了Id
: 以为会自动递增。
固定线路是context.Set<MyModel>().Add(new MyModel{MyData= "test", Id = "666"});
EDIT1:我遇到的另一个问题:如果应用程序行中有异常var myTable = MobileService.GetTable<MyModel>();
,确保您添加了Id
字段到您的模型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)