在所有情况下选择实体但使用 Azure 移动服务进行简单的 id 搜索时获取 null 属性
Getting null property when selecting entities in all cases but simple id search using Azure Mobile Services
我进行了一个足够大的项目,任务是向我的 DTO 模型添加一个布尔值 属性 并在我的移动应用程序中使用它。据说在后端这个 属性 已经被添加所以一切都应该工作正常。
但是我有这样的问题。假设 RemoteTable 定义如下:
protected IMobileServiceTable<T> RemoteTable;
并在注入的 MobileServiceClient 的构造函数中初始化如下:
RemoteTable = mobileClient.GetTable<T>();
如果我想像这样获取所有实体:
IMobileServiceTableQuery<T> remoteQuery = predicate != null
? RemoteTable.CreateQuery().Where(predicate)
: RemoteTable.CreateQuery();
remoteItems = await remoteQuery.ToCollectionAsync(PageSize);
或任何类似的方式:
var allItems = await RemoteTable.ToEnumerableAsync();
在那些情况下,我的实体没有 属性。其实我有这个例外:
Newtonsoft.Json.JsonSerializationException: 'Error converting value {null} to type 'System.Boolean'. Path '[0].IsRecommended'.'
所以我让我的 属性 可以为空,这样就不会出现此异常,以便能够测试应用程序并找出问题所在。而且我每次都收到 null 除了以下情况:
// suppose I already have entity myEntity taken from previous steps
// now the magic begins
myEntity = await RemoteTable.LookupAsync(myEntity.Id);
现在我的 bool 中有没有 null 的完整实体? 属性(现在它包含预期的 true/false)。
所以问题是:出了什么问题以及在哪里寻找它?为什么我无法获得设置了该布尔值 属性 的所有实体,但如果仅通过其 id 搜索一个实体我可以?
精简版 - 您更新了后端服务,但未更新底层数据库。
您需要将字段添加到数据库 table,然后更新每条记录以确保填充该值。这是执行迁移的情况 - 或者只是通过 SQL.
执行 ADJUST TABLE / UPDATE TABLE 命令
我进行了一个足够大的项目,任务是向我的 DTO 模型添加一个布尔值 属性 并在我的移动应用程序中使用它。据说在后端这个 属性 已经被添加所以一切都应该工作正常。
但是我有这样的问题。假设 RemoteTable 定义如下:
protected IMobileServiceTable<T> RemoteTable;
并在注入的 MobileServiceClient 的构造函数中初始化如下:
RemoteTable = mobileClient.GetTable<T>();
如果我想像这样获取所有实体:
IMobileServiceTableQuery<T> remoteQuery = predicate != null
? RemoteTable.CreateQuery().Where(predicate)
: RemoteTable.CreateQuery();
remoteItems = await remoteQuery.ToCollectionAsync(PageSize);
或任何类似的方式:
var allItems = await RemoteTable.ToEnumerableAsync();
在那些情况下,我的实体没有 属性。其实我有这个例外:
Newtonsoft.Json.JsonSerializationException: 'Error converting value {null} to type 'System.Boolean'. Path '[0].IsRecommended'.'
所以我让我的 属性 可以为空,这样就不会出现此异常,以便能够测试应用程序并找出问题所在。而且我每次都收到 null 除了以下情况:
// suppose I already have entity myEntity taken from previous steps
// now the magic begins
myEntity = await RemoteTable.LookupAsync(myEntity.Id);
现在我的 bool 中有没有 null 的完整实体? 属性(现在它包含预期的 true/false)。
所以问题是:出了什么问题以及在哪里寻找它?为什么我无法获得设置了该布尔值 属性 的所有实体,但如果仅通过其 id 搜索一个实体我可以?
精简版 - 您更新了后端服务,但未更新底层数据库。
您需要将字段添加到数据库 table,然后更新每条记录以确保填充该值。这是执行迁移的情况 - 或者只是通过 SQL.
执行 ADJUST TABLE / UPDATE TABLE 命令