如何为通过 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。
我是 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。