我想将这样的实体用于表存储:
public class MyEntity
{
public String Text { get; private set; }
public Int32 SomeValue { get; private set; }
public MyEntity(String text, Int32 someValue)
{
Text = text;
SomeValue = someValue;
}
}
但这是不可能的,因为 ATS 需要
- 无参数构造函数
- 所有属性都是公开的和读/写的。
- 继承自 TableServiceEntity;
前两个,是我不想做的两件事。为什么我希望任何人都可以更改一些应该是只读的数据?或以不一致的方式创建此类对象(那么 .ctor 的用途是什么?),或者更糟糕的是,更改 PartitionKey 或 RowKey。为什么我们仍然受到这些反序列化要求的限制?
我不喜欢以这种方式开发软件,如何以可以序列化和反序列化自己的对象的方式使用表存储库?我认为只要对象从 TableServiceEntity 继承就应该不是问题。
到目前为止,我必须保存一个对象,但我不知道如何检索它:
Message m = new Message("message XXXXXXXXXXXXX");
CloudTableClient tableClient = account.CreateCloudTableClient();
tableClient.CreateTableIfNotExist("Messages");
TableServiceContext tcontext = new TableServiceContext(account.TableEndpoint.AbsoluteUri, account.Credentials);
var list = tableClient.ListTables().ToArray();
tcontext.AddObject("Messages", m);
tcontext.SaveChanges();
有没有办法避免那些反序列化要求或获取原始对象?
干杯。