dtretyakov / WindowsAzure

.NET library aimed at managing and querying entities from Windows Azure Storage. It can be used as LINQ to Azure Tables.
MIT License
64 stars 27 forks source link

Getting a record #31

Closed jtreuting closed 4 years ago

jtreuting commented 10 years ago

What is the best way to get a message based on the PartitionKey and the RowKey? If I use the attributes on my poco to show which property is the PartitionKey and which is the RowKey, those properties get stored in the PartitionKey and the RowKey columns in the table and there are no table columns with the original property name. So then if I go to use LINQ to query a record I can't access the POCO.OriginalPropertyName because there is no OriginalPropertyName in the table, and I can't do POCO.PartitionKey because that doesn't exist on the POCO itself.

The only thing I can think of is having a built-in method for Get that accepts a PartitionKey and a RowKey where it can then translate that into the appropriate query against those columns and populate the POCO properties accordingly.

Or am I missing something that is already there?

dtretyakov commented 10 years ago

WASE hides properties mapping from library's consumer. So when you mark POCO properties by PK or RK attributes library transparently uses those properties to get / set / query values of PK and RK in the Table Entity, for instance:

POCO Table Entity
[PK] Continent PartitionKey
[RK] Region RowKey
[Property("AR")] Area AR
... ...
Country Country

Thus you could not find Continent, Region and Area in table columns.

Note: if you want to use not meaningful name-aliases like PartitionKey and RowKey you can do that, but don't forget to mark it by PK and RK attributes.