BCS metadata model is case sensitive

As always whenever I find something which is small but useful, I do end up blogging about it. Yesterday, I had a strange issue with my BCS metadata model. I created an IdEnumerator against AdventureWorks database and written a query to get SalesOrders using SQL. Everything looked ok but when I was crawling the content, i got an error “Column with Name 'SalesOrderID' does not exist.”. I was not able to figure out what can be the reason as query was running fine in query analyzer.

Tarkan Sevilimis provided me with the info that the problem is about case sensitive column name. My model was referring to the column name SalesOrderID whereas the select query was referring to SalesOrderId (notice the letter ‘d’). BCS is case sensitive as there can be scenarios where the backend systems which are case sensitive and may fail when the arguments passed are case sensitive. Make sure that whenever you model an entity, use the same case for arguments/columns as are defined in external system.