stored procedures - ServiceStack MARS (Multiple Active Result Sets) using ORMLite and Output Parameters -
servicestack ormlite great, i've typically steered clear of orm mentality preferring build databases makes sense build databases instead of 1:1 class model. said, there couple of things seem running difficulty around, i'm it's ignorance shining through.
first:
is there way manage multiple result sets using ormlite? know 1 can use querymultiple method using dapper, whatever reason i'm having bear of time figuring out how use built-in dapper implementation of servicestack.
second:
is there way using ormlite return output parameters within stored procedure call?
ideally, i'd steer clear of mars , output parameters , ideally i'd live in ideal world :)
i'm using .net framework 4.5, sql server 2008 r2 , servicestack 3.9.46.
it turns out quite simple (provided know magic make happen).
based on documentation , seemingly misleading post indicating dapper "included" in razor assumed when implied dapper "built-in" part of included libraries.
laugh if will, of aren't enlightened, i'm going outline how make dapper extensions show up. here's magic.
using package manager console execute following:
install-package servicestack install-package dapper
add following using statements (c#) service:
using servicestack.ormlite; using dapper;
now, when leverage db object ormlite , dapper methods there.
to output parameter simple as:
var p = new dynamicparameters(); p.add("@param1", request.stuff1); p.add("@param2", request.stuff2); p.add("@param3", dbtype: dbtype.int32, direction: parameterdirection.output); db.execute("schema.sp_stored_proc_name", p, commandtype: commandtype.storedprocedure); response.outputstuff = p.get<int>("@param3");
in order manage mars (assume have sp returns 2 result sets , output param):
p.add("@param1", request.stuff1); p.add("@param2", request.stuff2); p.add("@param3", dbtype: dbtype.int32, direction: parameterdirection.output); var mars = db.querymultiple("schema.sp_stored_proc_name", p, commandtype: commandtype.storedprocedure); //firstset contains first result set var firstset = mars.read().tolist(); //secondset contains second result set var secondset = mars.read().tolist(); response.outputstuff = p.get<int>("param3");
it's beautifully simple, once know magic :)
here's much more complicated example.
hopefully helps else out , saves them bit of time.
Comments
Post a Comment