我一直在浏览不同的示例和帖子,但找不到任何推荐的命名约定。当我查看文档时,我可以看到标准属性(id、ts ..)是小写的。然而,C# 的命名约定是属性为大写。这里推荐的方法是什么,您是否将所有内容都小写/大写,或者仅在 Cosmos DB 中使用小写属性,而不是在 C# 模型中使用小写属性或 .. ?这里有什么指导方针吗?
没有推荐的命名方法或指南。
id
是小写的,因为它是系统属性,而 _ts
带有下划线前缀,因为它是系统元属性。剩下的完全由您决定。
这取决于您的应用程序在将数据从对象转换为 Json 时如何序列化和反序列化数据,反之亦然。请记住,您以命名方式存储数据的方式是与使用该数据的所有应用程序签订的合同的一部分,因此只要您与序列化对象的方式保持一致,情况就无关紧要。
我使用 CamelCase 来遵循 JS 标准,但是,这里有一些需要考虑的事情。微软建议:
避免使用 LINQ,而是使用 QueryDefinition 从字符串构造查询
使用它,查询将如下所示:
var query = new QueryDefinition("SELECT * FROM c WHERE c.category = @category")
.WithParameter("@category", "Electronics");
注意骆驼箱!
现在假设您转到表示 JSON 的实体,并对属性进行重命名(出于某种原因,例如读取裸数据时有更好的上下文)。现在您必须记住返回查询并更新它!
如果您使用
nameof
来构建查询,从而无缝支持属性重命名,会怎么样?查询看起来像这样
var query = new QueryDefinition($"SELECT * FROM c WHERE c.{nameof(EntityName.Category)} = @category")
.WithParameter("@category", "Electronics");
注意默认 PascalCase!将会生成。
当然你可以使用
[JsonProperty("someName")]
并且如果你要重命名实体类中的属性,它不会影响第一个示例中的查询,但是如果你必须重命名 JSON 输出的属性怎么办?现在您必须在 [JsonProperty()] 和第一个示例的查询中更改 2 个位置。
所以我的前进策略是:
Default
命名,即 PascalCase(或者如果您确实希望在数据库中使用驼峰命名法 JSON,请打破 C# 风格,对于数据库实体仅使用驼峰命名法,然后使用 AutoMapper 映射到 PascalCase DTO)[JsonProperty("someName")]
,否则您必须在两个地方都重命名。nameof
指定与实体属性名称紧密相关的属性名称,以便轻松重命名和 Visual Studio 的“查找所有引用”功能请在评论部分告诉我你的想法。谢谢!