Well, it's not limited to uniqueidentifier (GUID) types. Although some other types do not throw an exception, they also do not return a value. For example, if I change the stored proc to accept a inout varchar(255), after running the c# code, the value in the command.parameter collection for that variable is null. Same if I set it to char(xx). It does work correctly for integer. Those are the only types I have tested to date.
This is just one of several issues I have experienced with the ADO.NET driver. Another issue relates to the DeriveParameters method of the PsqlCommandBuilder object. It returns the correct name and order of parameters, but the datatype and direction are often wrong.
Has anyone else experienced any of these issues? Do you know of any workarounds? I am beginning a major re-architecture project of an older system and need to resolve these issues.