これは実行可能です。私はかなり大規模なクライアントのためにこれを設計するのを手伝いました。
1) TableServiceEntity から継承するのではなく、エンティティに次の属性を実装します。
[DataServiceKey(new string[] { "PartitionKey", "RowKey" }), Serializable]
また、エンティティに PartitionKey、RowKey、および Timestamp を提供する何らかのインターフェイスをエンティティに実装します。
public interface ITableEntity
{
string PartitionKey { get; set; }
string RowKey { get; set; }
DateTime Timestamp { get; set; }
}
少なくともこのアプローチにより、独自のエンティティに対して独自の継承戦略を持つことができ、多重継承がないために制限されることはありません。キーを複製する代わりに、PartitionKey と RowKey が実際のキー プロパティへのパススルーを提供するようにしてください。
public string PartitionKey
{
get
{
return this.Id;
}
set
{
this.Id = value;
}
}
2) システムには、リレーショナル固有と ATS 固有の 2 種類のリポジトリがあることに注意してください。
3) EDMX を介してエンティティを生成し、部分クラスを使用して ITableEntity および DataServiceKey 属性を挿入できます。
4) ATS にデータを保存する方法は、ドメインでモデル化する方法とは異なるため、ある時点で、永続化のためにエンティティの変換を行うために ATS 固有のリポジトリが必要になります (これは特に階層データまたはリレーショナル データに関連します)
HTH