1

我有一种名为“评论”的类型,我将其保存到 Azure 表存储。由于评论可以是任意数量的其他类型,因此我创建了一个所有这些类型都实现的接口,然后将 ICommentable 类型的属性放在评论上。所以 Comment 有一个名为 About 的 ICommentable 类型的属性。

当我尝试将评论保存到 Azure 表存储时,如果 Comment.About 属性有一个值,我会收到毫无价值的无效输入错误。但是,如果 Comment.About 没有值,我没有问题。为什么会这样?

Comment.About 不是唯一的引用类型的属性。例如,Comment.From 是引用类型,但 Comment.About 是接口类型的唯一属性。

失败:

var comment = new Comment();
        comment.CommentText = "It fails!";
        comment.PartitionKey = "TEST";
        comment.RowKey = "TEST123";
        comment.About = sow1;
        comment.From = person1;

作品:

var comment = new Comment();
        comment.CommentText = "It works!";
        comment.PartitionKey = "TEST";
        comment.RowKey = "TEST123";
        //comment.About = sow1;
        comment.From = person1;

谢谢!

4

2 回答 2

2

Windows Azure 表存储只能存储少数几种类型,它们都不是您创建的 ICommentable 类型:http: //msdn.microsoft.com/en-us/library/windowsazure/dd179338.aspx

于 2012-10-05T21:55:30.040 回答
1

Azure 表存储客户端不支持控制哪些属性可持久化的精细方法。

您可能希望查看我在 CodePlex 上的开源项目,该项目允许对哪些字段/属性持久保存到表存储以及如何序列化它们进行细粒度控制。( http://lucifurestash.codeplex.com/ )

编辑:修正错字+澄清。

于 2012-10-05T23:28:39.003 回答