次のようなエンティティをテーブル ストレージに使用したいと思います。
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 から継承します。
最初の 2 つは、私がやりたくないことです。読み取り専用であるべきデータを誰でも変更できるようにする必要があるのはなぜですか? または、この種のオブジェクトを一貫性のない方法で作成するか (.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();
これらの逆シリアル化の要件を回避したり、生のオブジェクトを取得したりする方法はありますか?
乾杯。