Asp.net mvc 3 Azure表、分区键和行键功能

Asp.net mvc 3 Azure表、分区键和行键功能,asp.net-mvc-3,razor,azure-table-storage,Asp.net Mvc 3,Razor,Azure Table Storage,所以,刚刚开始使用Azure tables-之前没有玩过,所以想看看 我的理解是,我应该将其视为对象存储,而不是数据库,这很酷。但我在几点上有点困惑 首先,如果我有一对多对象关系,根对象的partitionkey应该是什么样子?例如,假设我有一个大学对象,它是一对多对学生对象,假设学生对象是一对多对类。对于一个新生来说,它的分区键应该是“大学ID”吗?还是“大学+学生”?我在msdn文档中读到RowKey应该是我添加的项目的特定id,听起来也像studentId 那么,一所新大学的分区键和行键都

所以,刚刚开始使用Azure tables-之前没有玩过,所以想看看

我的理解是,我应该将其视为对象存储,而不是数据库,这很酷。但我在几点上有点困惑

首先,如果我有一对多对象关系,根对象的partitionkey应该是什么样子?例如,假设我有一个大学对象,它是一对多对学生对象,假设学生对象是一对多对类。对于一个新生来说,它的分区键应该是“大学ID”吗?还是“大学+学生”?我在msdn文档中读到RowKey应该是我添加的项目的特定id,听起来也像studentId

那么,一所新大学的分区键和行键都是universityId吗

我还读到Azure表不用于存储列表-我认为它不涉及存储包含列表的对象

有人有使用asp mvc 3或4以及azure表的razor的代码示例的链接吗?这是我的最终目标,如果能看到一个真正知道自己在做什么的人会做什么,那就太酷了:)


谢谢

Azure表比数据库更接近对象存储,这一点您绝对是对的。您确实能够查询非键列,并在查询中执行逻辑。但您不应该计划将这些功能用于任何对性能至关重要的事情

因为只有在指定至少一个严重影响表布局方式的PartitionKey(最好是RowKey或range或RowKey)时,查询才会快速。您在开始时所做的决定将对以后的性能产生重大影响。作为一个粗略的类比,我喜欢将它们看作主键为(PartitionKey+RowKey)的SQL Server表,它永远不会有另一个索引。这并不完全准确,但它会让你朝着正确的方向思考

首先,如果我有一对多对象关系,根对象的partitionkey应该是什么样子

我可能会用大学ID作为分区键。这通常是一个安全的开始

对于一个新生来说,它的分区键应该是“大学ID”吗?还是“大学+学生”

你打算如何询问学生?如果你总是让他们的大学ID和学生ID,我可能会让他们分别成为分区键和行键。如果您主要是基于StudentId进行查询,我将使用它作为PartitionKey

一所新大学的分区键和行键都是universityId吗

这是一个可行的选择。如果您真的没有其他东西可以放在RowKey中,那么您还可以为RowKey使用一个常量值(例如“UNIVERSITY”)

我还读到Azure表不用于存储列表-我认为它不涉及存储包含列表的对象

我不完全确定那是什么意思。显然,您可以在表中存储对象集合,这就是它们的用途。不能在实体属性中直接存储列表。所以,如果你的学生有一个typee List属性,它不能直接存储。但您可以将其序列化为XML或二进制文件,并将其存储

不幸的是,我手头没有任何代码示例。这可能是将数据逻辑抽象到它自己的层中的好时机,而不是将它放在MVC控制器中。我们发现,一个抽象良好的数据层可以使逻辑的单元测试变得非常容易。如果为表创建一些接口,那么只需使用列表和一些LINQ就可以轻松创建模拟对象