如何为通过 Azure Android 客户端存储数据的一对多关系定义 class?

How to define a class for One-to-Many relationship for storing data via Azure Android Client?

我是 Azure 的新手, 我要设计一个一对多关系的模式table。

例如:

用户和产品一个用户可以拥有很多产品。

但我不知道 Android Azure 客户端如何处理数据到后端(.Net)

.Net 中,我们使用 Entity Framework 所以我们会设计这样的 class :

class User{
    ...
    public ICollection<Product> products {get;set;}
}

class Product{
    ...
    public User user {get;set;}
}

表示直观的一对多关系。

但是 Azure Android 客户端如何处理 class 及其属性?

我可以在 Entity Framework 上用同样的方式定义吗??

否则,我会这样定义:

class User{
    int userId;
    ...
}

class Product{
    ...
    int userId;
}

对应于我的数据库中定义的模式... 表示一对多总关系....

抱歉我的英文描述不透明...

哪种方式更合适?

(并随时改进我的描述)

客户端和后端之间传输的数据格式为JSON。所以在定义Data Transfer Object(DTO)之前需要先定义JSON结构。客户端和后端的数据传输对象都会根据JSON结构进行序列化和反序列化。

对于一对多关系,以下JSON结构就可以了。

{
  "UserID": "U001",
  "UserName": "John",
  "products": [
    {
      "ID": "P001",
      "Description": "Pencil"
    },
    {
      "ID": "P002",
      "Description": "Pen"
    }
  ]
}

对应C# DTOclass模型

public class User
{
    public ICollection<Product> products { get; set; }

    public string UserID { get; set; }

    public string UserName { get; set; }
}

public class Product
{
    public string ID { get; set; }

    public string Description { get; set; }
}

对应JavaDTOclass模型

public class Product
{
    @com.google.gson.annotations.SerializedName("ID")
    private String id;

    public String getID() { return this.id; }
    public void setID(String value) { this.id = value; }

    @com.google.gson.annotations.SerializedName("Description")
    private String description;

    public String getDescription() { return this.description; }
    public void setDescription(String value) { this.description = value; }
}

public class User
{
    @com.google.gson.annotations.SerializedName("UserID")
    private String userID;

    public String getUserID() { return this.userID; }
    public void setUserID(String value) { this.userID = value; }

    @com.google.gson.annotations.SerializedName("UserName")
    private String userName;

    public String getUserName() { return this.userName; }
    public void setUserName(String value) { this.userName = value; }

    @com.google.gson.annotations.SerializedName("products")
    private List<Product> products;

    public List<Product> getproducts() { return this.products; }
    public void setproducts(List<Product> value) { this.products = value; }
}

要使用 Android 的 Azure 移动服务 SDK 实现复杂关系,请参阅 https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-android-how-to-use-client-library#a-namecustomizingahow-to-customize-the-client to use GSON library for client & refer to https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-node-backend-how-to-use-server-sdk#a-namecustomapia-custom-apis 的最后一小节 How to: Store an object or array property into a table 以实现服务器的自定义 API。