私はAzure App Serviceモバイルアプリを初めて使用しています。私はTableController
を使用して複雑なドメインオブジェクトをクライアントに公開するオプションを理解しようとしています。 TableController
を使用する私の目標は、クライアント側のクエリとオフラインの同期を利用することです。TableController:永続データをDTOにフラット化
テーブルコントローラーは、単純なDTOでCRUD操作を実行するように設計されています。だから私は複雑なドメインモデルがどのようにTableController
が設計されているDTOのようなものとして公開されるのかを理解しようとしています。
私はMappedEntityDomainManager
を説明しているthis postと読みました。この例は、DTOと永続オブジェクトの間のかなり単純なマッピングを示しています。しかし、マッピングをより複雑にしたい場合はどうすればよいですか?
たとえば、のは、私はこのような永続的なタイプとしましょう:
public class Order {
public Customer Customer { get; set; }
public IList<OrderItem> OrderItems { get; }
}
public class Customer {
public string Name { get; set; }
public string TelephoneNumber { get; set; }
}
public class OrderItem { ... }
をそして、私はこのように宣言されたテーブルのコントローラがあります。
public class OrderController : TableController<OrderDto>
をOrderDto
は、このように見えるだろうか?
public class OrderDto {
public string CustomerName { get; }
public string Customer { get; }
public string OrderItems { get; }
}
マッピングは次のようになります。 Order.Customer.Name
プロパティは、OrderDto.CustomerName
にフラット化されています。完全なCustomer
オブジェクトは、OrderDto.Customer
にシリアル化されています。 Order.OrderItems
リストはOrderDto.OrderItems
にシリアライズされています。
MappedEntityDomainManager
でこのような複雑なマッピングを行うことはできますか?もしそうでなければ、それはどうやって行えますか?私はleveraging $expand
について知っていますが、推奨されるアプローチではなく、サポートされていないハッキングかもしれないと心配しています。
あなたのアプローチは、クラウド上でnoSQLを使用してクライアント側(アプリケーション)でsqliteを使用しているように見えます。これは多かれ少なかれ、私が正しく理解すればアマゾンのWebサービスsnycのアプローチです。 – batmaci