Unity结合Azure Spatial Anchors使用Cosmos DB如何新增自定义JSON列


问题解决方案
方案1:继承扩展TableEntity(无侵入,无需修改元数据文件)
- 自定义一个继承自现有
TableEntity的子类,在子类中新增Totems属性即可,元数据生成的TableEntity一般是partial类或者可继承的公开类,直接继承不会影响原有逻辑 - 示例代码:
// 自定义扩展实体类 public class CustomTableEntity : TableEntity { // 如果要存结构化JSON可以把类型替换为自定义的Totems类或者object,Cosmos DB SDK会自动序列化 public string Totems { get; set; } }
- 后续读写操作直接用
CustomTableEntity作为数据载体,原有针对TableEntity的通用逻辑依然可以复用,新增的Totems字段会自动和数据库中对应的列映射。
方案2:用动态属性/字典扩展(适配无强类型需求的场景)
- Azure Cosmos DB的Table API本身支持动态属性读写,不需要在实体类中提前定义字段,你可以直接通过
TableEntity的索引器读写额外字段:
// 写入Totems字段 entity["Totems"] = "你的JSON字符串或对应值"; // 读取Totems字段 var totemsValue = entity["Totems"]?.ToString();
- 这种方式完全不需要修改原有实体类,适合临时加字段、不需要强类型校验的场景。
接口适配逻辑
- GET接口:查询到实体后,将
Totems字段取出和其他字段一起返回即可,如果用第一种继承方案直接序列化自定义类就可以,第二种方案手动把Totems值加到返回体中。 - POST接口:接收前端传的
Totems参数,按上面的两种方式赋值到实体后执行写入操作,Cosmos DB会自动把值写入对应的列。
内容的提问来源于stack exchange,提问作者Cavanju
相关产品推荐
相关产品推荐

