如何将客户端的关系数据保存到 Azure 移动应用
How do I save relational data from the client to Azure Mobile Apps
在我的 Xamarin.Forms 项目中有一个 Category
模型,其中包含 Grades
的列表。用户必须能够 select 一个 Category
并向其添加一个新的 Grade
。但是,我无法保存与父 Category
.
有关系的 Grade
问题:如何添加 Grade
以引用现有的父 Category
?
我的代码本质上是执行以下操作以添加新的 Grade
.
Category category = await cloudService.GetDefaultCategory();
Grade grade = new Grade() { Title = "Grade 1", Category = category };
await gradeTable.CreateItemAsync(Grade); // this is an IMobileServiceTable
当我尝试这样做时,出现以下错误。
The operation failed due to a conflict: 'Violation of PRIMARY KEY constraint 'PK_dbo.Categories'. Cannot insert duplicate key in object 'dbo.Categories'. The duplicate key value is (DA289023-09DC-45B8-B277-C3546E99F2DA).
客户模型
public class Category : TableData
{
public string Title { get; set; }
public List<Grade> Grades { get; set; }
}
public class Grade : TableData
{
public string Title { get; set; }
public Category Category { get; set; }
}
public abstract class TableData
{
public string Id { get; set; }
public DateTimeOffset? UpdatedAt { get; set; }
public DateTimeOffset? CreatedAt { get; set; }
public byte[] Version { get; set; }
}
服务器型号
public class Category : EntityData
{
public string Title { get; set; }
public List<Grade> Grades { get; set; }
}
public class Grade : EntityData
{
public string Title { get; set; }
public Category Category { get; set; }
}
正如Eric所说,你需要在Grade class上加一个CategoryId
属性。 TableData
中的 Id
是远程存储中的主键,但它无法为您管理关系。
public class Grade : TableData
{
public string Title { get; set; }
public string Id { get; set; }
public string CategoryId { get; set; }
public Category Category { get; set; }
}
public class Category : TableData
{
public string Title { get; set; }
public string Id { get; set; }
public List<Grade> Grades { get; set; }
}
在我的 Xamarin.Forms 项目中有一个 Category
模型,其中包含 Grades
的列表。用户必须能够 select 一个 Category
并向其添加一个新的 Grade
。但是,我无法保存与父 Category
.
Grade
问题:如何添加 Grade
以引用现有的父 Category
?
我的代码本质上是执行以下操作以添加新的 Grade
.
Category category = await cloudService.GetDefaultCategory();
Grade grade = new Grade() { Title = "Grade 1", Category = category };
await gradeTable.CreateItemAsync(Grade); // this is an IMobileServiceTable
当我尝试这样做时,出现以下错误。
The operation failed due to a conflict: 'Violation of PRIMARY KEY constraint 'PK_dbo.Categories'. Cannot insert duplicate key in object 'dbo.Categories'. The duplicate key value is (DA289023-09DC-45B8-B277-C3546E99F2DA).
客户模型
public class Category : TableData
{
public string Title { get; set; }
public List<Grade> Grades { get; set; }
}
public class Grade : TableData
{
public string Title { get; set; }
public Category Category { get; set; }
}
public abstract class TableData
{
public string Id { get; set; }
public DateTimeOffset? UpdatedAt { get; set; }
public DateTimeOffset? CreatedAt { get; set; }
public byte[] Version { get; set; }
}
服务器型号
public class Category : EntityData
{
public string Title { get; set; }
public List<Grade> Grades { get; set; }
}
public class Grade : EntityData
{
public string Title { get; set; }
public Category Category { get; set; }
}
正如Eric所说,你需要在Grade class上加一个CategoryId
属性。 TableData
中的 Id
是远程存储中的主键,但它无法为您管理关系。
public class Grade : TableData
{
public string Title { get; set; }
public string Id { get; set; }
public string CategoryId { get; set; }
public Category Category { get; set; }
}
public class Category : TableData
{
public string Title { get; set; }
public string Id { get; set; }
public List<Grade> Grades { get; set; }
}