I ran into this problem. If you look at the query that he is trying to run, you will see that he is doing something like this (this is not the actual code, but you will get the point):
exec_sql N'insert into MyTable (SomeField) Values (@ins_SomeField)',N'@0 varchar(32)','@0=SomeValue'
For some reason, it defines the parameters in the query using "@ins_"+FieldName , but then passes the parameters as ordinals. I have yet to define a template for why / when it does it, but I have lost enough time during this dev loop with SubSonic to try to correctly diagnose the problem.
The implemented work process will include loading the source 3.0.0.4 from github and making changes to line 179. Insert.cs.
Where is he reading
ParameterName = _provider.ParameterPrefix + "ins_" + columnName.ToAlphaNumericOnly(),
Change it to
ParameterName = _provider.ParameterPrefix + Inserts.Count.ToString(),
seemed to me a trick. I make no warranties regarding this decision for you, expressed or implied. This worked for me, but your mileage may vary.
I should also note that the same logic around "updates", as well as in Update.cs on lines 181 and 194, but I did not have such problems, I do not know yet.
Honestly, I donβt think SubSonic is ready for prime time, and thatβs a shame because I really like how Rob set it up. However, this is in my product for better or worse now, so you are doing everything you can with what you have.