Azure function and Cosmos DB Table API – Method not found exception
While creating ‘Entities’ in Azure cosmos Table API from Azure function we encountered following exception.

Reason:
- Azure Function application project was configured using ‘Azure Function v1 (.NET Framework)’.
- “Microsoft.Azure.Cosmos.Table” nuget package is not compatible with ‘Azure Function v1 (.NET Framework)’.
Fix:
- Change the Azure Function application project type to .NET Core.

Now lets understand the technical Know-how to configure ‘Azure Table API’ and interact from Azure Function application project.
Configure ‘Azure Table API’
- Login to your Azure Portal.
- Create a new ‘Azure Cosmos DB Account’ by selecting ‘API’ as ‘Azure Table’.

- Once deployment is complete, open the ‘Resource’.

- Lets create a new table by clicking on ‘New Table’ from ‘Data Explorer’. Provide the ‘Table id’ and click ‘OK’.

- In ‘Azure Table API’ record/row is referred as ‘Entity’ and every ‘Entity’ must have ‘PartitionKey’ and ‘RowKey’ values.
- You must include the
PartitionKey
and RowKey properties in every insert, update, and delete operation.
- You must include the

- To connect to ‘Azure Table API’ from external applications (i.e., Azure Function,etc..) we need the ‘Connection String’.
- Go to ‘Connection String’ tab and copy the ‘PRIMARY CONNECTION STRING’.

Create ‘Azure Function Application’ project
- Open Visual Studio and create a new ‘Azure Functions’ project.

- Select .NET version either v2 or v3 .NET Core.

- Rename the ‘Function Name’ to a meaningful one. I set my function name as ‘CosmosTableAPI’.

- Add ‘Microsoft.Azure.Cosmos.Table’ NuGet package.

- Following is the code snippet to connect to ‘Azure Table API’ and Insert entities.
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Function, “get”, “post”, Route = null)] HttpRequest req,
ILogger log)
{
CreateTableandAddData().Wait();}
public static async Task CreateTableandAddData()
{
string tableName = “customers”;
// Create or reference an existing table
CloudTable table = await Common.CreateTableAsync(tableName);
IndividualEntity customer = new IndividualEntity(“Harp”, “Walter”)
{
Email = “Walter@contoso.com”,
PhoneNumber = “425-555-0101”
};
Console.WriteLine(“Insert an Entity.”);
customer = await InsertOrMergeEntityAsync(table, customer);
}
public static async Task<IndividualEntity> InsertOrMergeEntityAsync(CloudTable table, IndividualEntity entity)
{
try
{
// Create the InsertOrReplace table operation
TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
// Execute the operation.
TableResult result = await table.ExecuteAsync(insertOrMergeOperation);
IndividualEntity insertedCustomer = result.Result as IndividualEntity;
// Get the request units consumed by the current operation. RequestCharge of a TableResult is only applied to Azure Cosmos DB
if (result.RequestCharge.HasValue)
{
Console.WriteLine(“Request Charge of InsertOrMerge Operation: ” + result.RequestCharge);
}
return insertedCustomer;
}
catch (StorageException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}public static async Task<CloudTable> CreateTableAsync(string tableName)
{
string storageConnectionString = “{Connection string copied from Azure Table API in previous section}”;
// Retrieve storage account information from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
// Create a table client for interacting with the table service
CloudTableClient tableClient = storageAccount.CreateCloudTableClient(new TableClientConfiguration());
tableClient.TableClientConfiguration.UseRestExecutorForCosmosEndpoint = true;
// Create a table client for interacting with the table service
CloudTable table = tableClient.GetTableReference(tableName);
if (await table.CreateIfNotExistsAsync())
{
Console.WriteLine(“Created Table named: {0}”, tableName);
}
else
{
Console.WriteLine(“Table {0} already exists”, tableName);
}
return table;
}
public class IndividualEntity : TableEntity
{
public IndividualEntity()
{
}
public IndividualEntity(string lastName, string firstName)
{
PartitionKey = lastName;
RowKey = firstName;
}
public string Email { get; set; }
public string PhoneNumber { get; set; }
}
- Compile and run the project.
- Visual studio opens up a console (Storage Simulator) as below. Copy the URL.

- Hit the URL either from browser or Postman tool.

- You would get following output from the console.

- Go to Azure Portal and you should see a new entity created

🙂