You did not specify which database is behind your OData service, so this may not be relevant. In SQL Server, you can bind to SELECT WITH nolock statements to prevent table locking. The presence of this tells me that SELECTS are definitely candidates for blocking problems.
Unfortunately, in EF there is no way to specify WITH nolock in your queries. The closest I could find was to wrap your connection in a transaction and set the isolation level for reading without changing (as indicated in the answer to the question I linked in the comments).
Here is a sample code from the corresponding question to show how you do it:
//declare the transaction options var transactionOptions = new System.Transactions.TransactionOptions(); //set it to read uncommited transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted; //create the transaction scope, passing our options in using (var transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, transactionOptions)) { //declare our context using (var context = new MyEntityConnection()) { //any reads we do here will also read uncomitted data //... //... } //don't forget to complete the transaction scope transactionScope.Complete(); }
source share