这是可行的。我已经帮助一个相当大的客户构建了这个。
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 特定的。
3)您可以通过 EDMX 生成实体并使用部分类将其注入 ITableEntity 和 DataServiceKey 属性
(这尤其涉及分层或关系数据)
高温高压