c# - Dapper for Table Valued parameter in generic implementation -



c# - Dapper for Table Valued parameter in generic implementation -

following post using dapper.tvp tablevalueparameter other parameters have been able execute table valued parameter question regarding part of implementation. procedure seems working how can create implementation more generic? adding parameters in dynamicparameters 'new {}' specialized implementation according requirement. want able specify parameter name well.. example

public ienumerable<tcustomentity> sqlquery<tcustomentity>(string query, idictionary<string, object> parameters, commandtype commandtype) tcustomentity : class { datatable dt; dynamicparameters dp; var sqlconnection = _context.database.connection; seek { if (sqlconnection.state == connectionstate.closed) { sqlconnection.open(); } var dynamicparameters = new dynamicparameters(); if (parameters != null) foreach (var parameter in parameters) { if (parameter.value int) dynamicparameters.add(parameter.key, parameter.value, dbtype.int32); else if (parameter.value string) dynamicparameters.add(parameter.key, parameter.value.tostring(), dbtype.string); else if (parameter.value datetime) dynamicparameters.add(parameter.key, parameter.value, dbtype.datetime); else if (parameter.value decimal) dynamicparameters.add(parameter.key, parameter.value, dbtype.decimal); else if (parameter.value datatable) { dt = (datatable)parameter.value; dt.settypename(dt.tablename); var parametername = parameter.key; dp = new dynamicparameters(new { tvpname = dt }); // here want tvpname replaced parametername/parameter.key doesn't seem possible dynamicparameters.adddynamicparams(dp); } else dynamicparameters.add(parameter.key, parameter.value); } var test = sqlconnection.query<tcustomentity>(query, dynamicparameters, commandtype: commandtype); homecoming test; } { sqlconnection.close(); } }

any advice how may proceed on issue making parameter name more generic? if not, specialized implementation each time utilize table value parameter

it isn't obvious me any of necessary, since:

dynamicparameters happy tvps direct elements, all of info types shown handled automatically dapper works happily dictionaries dapper opens , closed connection appropriately if isn't open when invoked

it seems me interesting step here settypename, done:

foreach(object val in parameters.values) { if(val datatable) { var dt = (datatable)val; dt.settypename(dt.tablename); } }

and pass original parameters object in:

return sqlconnection.query<tcustomentity>(query, parameters, commandtype: commandtype);

that leaves just:

public ienumerable<tcustomentity> sqlquery<tcustomentity>(string query, idictionary<string, object> parameters, // suggestion: default null commandtype commandtype // suggestion: default commandtype.text ) tcustomentity : class { var sqlconnection = _context.database.connection; if (parameters != null) { foreach (object val in parameters.values) { if (val datatable) { var dt = (datatable)val; // suggestion: might want if dt.gettypename() null/"" dt.settypename(dt.tablename); } } } homecoming sqlconnection.query<tcustomentity>(query, parameters, commandtype: commandtype); }

c# asp.net-mvc visual-studio dapper

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -