You need to either use batching Or post an entity and a collection of related entities
But for your scenario (where you just want to add multiple records) seems like batching is the only way to go with OData.
Your solution seem fine, but I would make sure you limit the query capability using Query Limitations. See this link for more details - http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
The query options give the client a lot of control over the query that is run on the server. In some cases, you might want to limit the available options for security or performance reasons. The [Queryable] attribute has some built in properties for this. Here are some examples.
Allow only $skip and $top, to support paging and nothing else:
[Queryable(AllowedQueryOptions=
AllowedQueryOptions.Skip | AllowedQueryOptions.Top)]
Allow ordering only by certain properties, to prevent sorting on properties that are not indexed in the database:
[Queryable(AllowedOrderByProperties="Id")] // comma-separated list of properties
Allow the “eq” logical function but no other logical functions:
[Queryable(AllowedLogicalOperators=AllowedLogicalOperators.Equal)]
Do not allow any arithmetic operators:
[Queryable(AllowedArithmeticOperators=AllowedArithmeticOperators.None)]
You can restrict options globally by constructing a QueryableAttribute instance and passing it to the EnableQuerySupport function:
var queryAttribute = new QueryableAttribute()
{
AllowedQueryOptions = AllowedQueryOptions.Top | AllowedQueryOptions.Skip,
MaxTop = 100
};
config.EnableQuerySupport(queryAttribute);