►
From YouTube: .NET Design Review: System.Data
Description
00:00:00 - Approved: Add missing async methods in System.Data.Common and implement IAsyncDisposable https://github.com/dotnet/corefx/issues/35012#issuecomment-492336595
00:31:15 - Approved: Add missing feature detection properties to DbProviderFactory https://github.com/dotnet/corefx/issues/35564
00:36:11 - Approved: New System.Data.Common batching API https://github.com/dotnet/corefx/issues/35135#issuecomment-492347155
A
All
right
we
are
live,
but
apparently
my
screen
does
not
quite
work.
Let
me
first
fix
that
because
the
pillow,
my
second
one
it
or
does
not
show
up
this
one
does,
but
not
the
here
we
go.
No.
This
is
one
there
and
apparently
also
have
audio.
So
that's
not
too
bad
alright.
So
let
me
zoom
a
little
bit
summary
of
its
answer.
What's.
B
Going
on
the
order
you
want
to
go
through
or
I
mean,
there's
one,
that's
quite
big,
which
is
the
patching
one.
It
might
be
good
to
get
this
out
of
the
way
first,
possibly
because
the
other
one
will
take
up
some
time.
That's
right,
so
this
issue
is
basically
about
filling
gaps
that
we
have
in
a
do
that
with
regards
to
async
api's.
B
C
B
B
D
B
So
it
depends
which
kind
of
pooling
strategy
you
have
I
mean
I'm,
not
aware
of
a
provider
that
has
like
a
full
pool
and
then
which
closes
it
because
the
pool
is
full.
Usually
you
would
you
always
have
a
place
to
return
it
into
the
pool.
So,
but
pooling
is,
you
know,
is
open
and
can
be
implemented
in
any
way
possible.
It
would
grow
the
pool
better
than
a
human
connection.
Usually
you
don't
allocate
more
than
than
the
pool,
so
you
have
a
very
fixed.
We
had
a
conversation
about
this
one.
So.
B
E
B
D
B
One
case
is:
if
the
user
has
disabled
cooling,
for
example,
one
one
good
cases
you
may
be
using
an
out
of
casa,
spooning
solution,
that's
not
inside
the
driver,
so
you
may
be
connecting
to
another.
This
happens
a
lot
with
first
person.
You
connect
to
an
external
component
that
actually
does
believe
for
you,
but
which
means
that
you
are
doing
a
sink
and
a
sink
operations.
When
opening
and
closing
and
you're
connecting
to
that
external
component
over
socket
CCD.
D
B
E
D
B
B
Pattern
which
will
also
see
what
the
batching,
where
you
have
one
non-virtual
public
API
like
create
command,
which
delegates
to
a
protected
virtual
one,
which
the
providers
in
it
implement
and
that
allows
and
provider
implementations
to
you
both
override
the
protected
virtual
one.
And
you
do
one
new
begin.
So
you
do
a
new
create
command
which
hides
the
the
original
one.
D
B
B
E
A
Or
not
because
you
basically
add
so,
it
seems
like
there
is.
It
said
the
pattern
is
begin
transaction
with.
Overall
desolation
level
is
a
non-virtual
on
DB
connection
and
then
the
one
that
is
virtually
is
begin,
DB
transaction
and
it's
protect.
So
it
seems
like
yeah
exactly
it
seems
like
no
you're
adding
public
methods
that
are
virtual
yeah.
It's
breaking
the
family
right,
but
it
seems
just
odd
with
the
way
that
the
existing
one
is
fracturing.
You're.
B
A
D
D
B
B
Remember,
they're
actually
being
on
your
checking
in
the
base
nice
implementation
of
anything
here.
These
are
completely
empty.
Delegating
methods,
if
I
remember
correctly,
but
it
does
again
allow.
So,
if
you're
coding
against
the
specific
provider
classes,
you
can
be
calling
the
so
not
be
overridden,
but
the
new
methods
and
you're
interacting
with
those
types,
that's
I,
think
that's
the
the
value
of,
and
it's
true
that
this
API
is
not
following
down
looking.
D
At
your
existing
and
presumably
your
begin
transaction
async
that
doesn't
take
the
isolation
level,
wouldn't
be
non
virtual,
it
would
add,
and
then
begin
transaction
async
that
fix
the
isolation
level
would
also
be
non
virtual.
But
then
you
would
have
began
debe
tener
that
can
async.
That
does
take
asset,
which.
D
G
D
E
A
D
B
So
for
that
particular
method,
the
idea
was
that,
as
a
general
rule,
this
is
always
going
to
invite
the
Phoenicians
do
a
round
trip
and
natural
database
round
trip,
and
it's
very
unlikely
to
benefit
from
an
I
value
task
source,
at
least
as
advanced
things
stand
today.
That
was
the
general
reason,
so
it's
pretty
much
always
going
to
complete
asynchronously.
Yes,.
B
I
mean
I,
don't
know
of
an
in-memory
provider.
That's
actually
gonna.
Are
you
talking
about
something
like
sequel
right
sure
I
mean
it's
very
hard
to
have
transaction?
Well,
no
very
in
memory
right,
yeah,
but
sequel
light.
Doesn't
Amanda
I
mean
super
light,
actually
has
an
in
memory
mode
as
well
and
also
does
transactionality,
so
you
actually
do
have
that
it,
so
it
doesn't
guarantee
when
you
crash
that
it
makes
insane
I
think
it
does,
but
I'm
not
so
I'm
in
memory.
If
you
crash,
then
it's
gone.
B
A
D
E
B
B
D
Separate
value
tasks
of
value
task
of
tea-
yes,
yes,
Elsie,
and
for
value
task
of
tea
for
virtuals
when
in
doubt,
if
there's
any
chance
yeah,
if
you
don't
completely
understand
your
entire
derive
Manmatha
l--,
then
value
task
of
tea
is
probably
a
better
option,
because
someone
may
actually
be
faster
than
you
expect.
Okay,
even
applying
aspect
of
the
usability
problems
of
value
test
well,.
G
D
When
performance
comes
into
play,
value
tasks
can
be
better
or
value
test
achieve
a
better
variety
situations,
but
its
worst
from
a
usability
perspective,
and
so
then
you
have
to
factor
in
how
does?
How
is
the
API
actually
going
to
be
used
if
it's
an
API
that
it's
likely
that
someone,
if
it's
an
API,
where
the
only
thing
people
are
ever
going
to
do,
is
a
wait?
Just
wait,
X
no
composing.
Yet
then,
then
it
makes
value
tasks
of
T
on
a
virtual
ism,
pretty
much
better
assistant.
If
somebody's
gonna
compose
over
a
versus
well.
D
Like
begin
trans
transaction
async,
like
it's
pretty
likely
that
someone's
doing
you
know
a
weight,
begin
transaction
dou,
X,
dou,
Y,
dou
Z,
stop
it's
less
likely
that
they're
gonna
store
it
into
a
they're
gonna.
Do
lazy,
initialization
of
some
data,
storing
the
resulting
task
into
a
data
structure
that
then
lots
of
people
didn't
go
access?
It
doesn't
really
apply
to
that.
Such.
D
D
To
get
at
startup,
you
want
to
download
some
data
store
it
somewhere
for
everyone
to
access,
so
you're
gonna
store
the
task
of
string
in
a
collection
and,
in
fact,
so,
for
those
value
tasks,
probably
isn't
as
good
and
so
from
a
usability
perspective,
because
there
are,
there
are
all
these
limitations
on
what
you
can
do
with
a
value
task,
and
it
doesn't
always
tell
you
if
you're
doing
a
phone
in
the
best
situation
best
case.
Is
you
get
an
error?
Your
worst
case?
Is
you
get
corruption?
Yes,.
D
Yes,
so
from
a
usability
perspective,
you
always
want
to
err
on
the
side
of
task
or
performance
perspective.
Value
task
of
T
is
generally,
but
not
always
a
better
answer,
and
so
our
guidance
is
basically.
This
performance
is
always
sort
of
secondary
to
usability
and
correctness
or
fir
tasks,
but
but.
B
D
Wish
I
wish
my
answer
could
just
be
always
do
yeah,
and
if
I
have
to
choose
an
always
to
claw,
it's
gonna
be
tasks.
How
many
times
have
you
had
this
feature
area,
I'm
kind
of
curious
twice
this
week,
I've
been
wracking,
my
head
about
whether
I
could
come
up
with
like
a
always
low,
jerks
and
I
can
definitely
come
up
with
a
flow
chart.
Maybe
I
should
write
that
down
it.
D
E
E
D
E
E
B
B
B
We
slide
by
the
section
they
are
quiet,
but
then
there
is
the
one
thing
that
emo
we
were
discussing
a
little
bit,
so
they
D
be
beta.
Reader
has
a
close,
async
next
to
dispose
async
and
they
both
return
value
to
us,
because
they're
largely
identical
expected
to
be.
This
is
mirroring
the
sync
API
for
consistency,
and
we
don't
know
if
some
provider
may
have
implemented
some
nuance
between
disposing
close
or
the
ones
are
going
to
be
B
data
reader.
B
B
A
It
is
a
general
pollen
in
the
VCL.
That
slows
very
often
is
the
same
as
this
pulse,
but
not
always,
if
you
look
at
the
guidelines,
this
basis
said
use
the
verb
that
is
appropriate
for
the
stuff
because
they
couldn't
agree
that
panels
are
being
disposed,
not
close,
but
basically
there's
the
other
distinction,
which
is
well
things
you
can
close.
Sometimes
you
can
reopen,
which
means
brush
the.
E
G
B
B
B
B
E
B
Is
one
slight
small
difference
which
is?
There
are
two
properties
on
DB
daito-ryu
according
to
the
documentation
which
are
valid
after
closing,
but
not
after
disposing,
which
is
Records
affected
by
the
command
that
you
are
having
the
reader
on?
So
in
theory?
Yes,
there's
there's
a
difference
there
yeah,
but
what's
the
benefit.
D
B
D
People
are
only
gonna
call
call
this
pose
async
than
having
to
close
their
safe
return,
dispose
async,
I'd,
ask
ask,
and
you
never
get
any
colors
would
mean
you've
mirror
API
in
now.
You
don't
have
to
and
you're
like
well
this
one
is
this
pose
or
value
task,
because
the
interface
says
so
and
this
one
is
passed
because
the
guidelines
say
so
and
guidances
don't
call
close
call.
This
pose
I'm.
A
B
B
D
B
D
A
The
method
as
public
I
think
it
would
just
fall
through
that's
the
thing
if
they
explicitly
implemented
and
then
his
war
for
the
interface
I
mean
otherwise.
It
would
basically
have
a
probably
a
zero
uses
very
good
point,
and
if
you
look
at
I,
don't
know
we
just
look
at
the
derived
tribes
for
a
second.
Oh
I
can
see.
A
B
Think
we
should
be
keeping
them
virtual.
Even
we
don't
know
what
providers
may
have
done
in
the
sink
side
of
things
and
if
M
distinction
has
been
introduced
on
the
same
setting
should
allow
them
to
happen
on
the
ice
inside
and
what
is
that?
You
cannot
limitation,
go
all
this
pole
dancing
or
go
food
I
think
if
there's
nothing
but
I
would
have
to
be
different.
G
A
F
Actually,
to
the
point
that
I
just
mentioned,
what
would
the
correct
you
know
see
us
if
they
did
overall
hey
what
way
so,
like
I
had
mentioned
that
the
visa
stage,
however
long
the
tight
as
it
currently,
is
this?
What
what
does
it
look
like
correctly
if
someone
tried
to
do
this
opposing.
D
D
D
D
You
have
a
finalized
er,
that's
going
to
always
be
a
synchronous
thing.
So
now
you
should
be
synchronous
disposable
to
solvent
if
you
can
benefit
from
AC
dispose
and
also
delays.
Engine
I
mean
yes
and
know
that
a
lot
of
times
you'll
find
finalized
errs
that
do
like
they're,
often
to
things
that
need
to
be
done
in
disposed.
A
D
B
D
A
A
And
let
me
just
hope
you
pass
the
the
feedback
items
in
minute
has
to
feel
like
the
bestest.
Mostly
asking
questions
could
be
two
key
things.
You
said
it
said
the
first
one
is
the
one
that
you
might
just
put
up
in
the
second
one.
Is
they
consider
whether
you
one
way
to
task
with
tierracast
15
but
I?
Think
that
was
pretty
much.
B
A
A
B
B
Basically,
there's
a
small
feature:
detection,
API
or
rather
pattern
that
allows
you
also
to
film.
Not
all
providers
implement
everything
if
you
call
a
method
that
is
not
supported
and
you
will
get
either
an
exception
or
no.
The
idea
here
is
to
simply
add
to
feature
detection
properties,
the
DB
provider
factor
a
factory
that
tell
you
whether
that
provider
can
create
a
data
adapter
or
not.
A
B
E
A
A
E
E
B
A
I
mean
it
kind
of
makes
sense.
You
want
to
check
them
about
having
to
refer
to
the
moment
where
you
actually
need
that
right.
You
may
want
to
check
this
earlier
on
hide
the
stack
and
just
all
right
confuse
the
provider,
because
what
pop-up
or
if
so,
there's
you're
like
no
I,
don't
support
that
I
need
something
that
actually
can
create.
I,
don't
know
data
deficit,
I.
D
B
A
A
B
Yeah
I
don't
quite
know
how
to
go
about
this
kind
of
issue.
There's
a
lot
of
API
surface
here,
the
general
problem
here.
If
you
want
to
really
go
through
it,
is
that
right
now
I
do
that
it
doesn't
have
a
first-class
matching
API.
So
you
can't
execute
multiple
sequel,
safe
statements
in
one
round
round
trip
what
has
evolved.
It
has
has
been
what
you
see
there:
a
concatenation
based
approach
where
you
just
stick
the
multiple
statements
into
a
command.
There
are
various
problems
with
that.
A
B
Basically,
single
batch
of
the
server
you
want
around
it.
Basically,
the
idea
here
is
just
to
do.
One
mantra
of
core
is
a
very
intensive
consumer
of
batching
at
the
moment.
So
when
you
do
a
lot
of
updates
and
you
to
Save
Changes
at
the
end
and
get
batches,
everything
and
I
know
it
uses
this.
This
API.
A
B
The
troll,
the
way
the
API
has
currently
proposed,
is
that
you
have
something
called
a
DB
batch,
which
is
a
container
for
an
I
list
of
DB
batch
commands,
and
each
batch
command
has
a
sequel
and
a
parameter
collection.
What's
basically
a
container
of
a
lot
of
sequel
and
parameter
sauce.
This
is
the
the
current
proposal
and
then
the
execution,
the
execute
methods
are
on
the
batch
itself
and
not
on
individual
commands.
Invasive.
D
Are
you
going
to
have
any
providers
in
your
initial
implementation
that
do
not
that
return
something
other
than
list
of
T
for
the
property
you
have
called?
It
is
probably
not
aah
like
I
mean
one
collections,
guidances
users
will
cast
it.
If
you
don't
have
anything
in
the
initial
implementation
that
uses
the.
G
B
Do
you
need
a
new
bench
come
on?
Why
can't
you
do
in
this
big
list
in
DB
that
that's
the
way
the
proposal
actually
started
out
one
of
the
problems,
so
one
problem
is
that
EB
command
has
some
properties
which
would
be
dead
when
used
within
a
batch
like
timeout,
which
which
doesn't
make
sense
on
a
batch
command
within
a
batch.
B
It's
something
that
applies
to
the
batch
as
a
whole,
if
also
some
other
properties
which
are
dead
if
I
remember
correctly,
another
problem
is
the
DB
command
is
disposable
and
that
creates
various
lifetime
lifecycle
issues.
So
if
you
dispose
a
DB
command
as
part
of
a
batch,
how
does
that
work
with
the
batch?
Is
the
batch
itself
disposable?
So
all
these
questions
we
kind
of
went
back
and
forth
on
them
and
find
and
kind
of
decided
that
we
prefer
to
avoid
them.
Does
it
make
sense
for
the
thing
inside
the
batch
to
be
disposable?
B
B
Is
a
good
day
we
also
you
talked
about
a
default
implementation.
We
also
went
back
and
forth
a
lot
about
having
a
shim
or
not
implementing
this
API
over.
Let's
say
concatenation
based
matching
so
that
you
can
use
this
API
or
sequel
services.
We
decided
against
it
for
various
reasons,
and
yet
we
don't
want
us,
so
we
don't
want
to
simulate
batching
without
there
actually
being
batching
yeah
and
there's
also
a
lot
of
edge
cases
which
make
it
kind
of
impractical
to
wrap
concatenation
batching.
C
B
It's
owned
by
me:
Microsoft,
then
sequel,
a
sequel,
client
we'd,
really
love
to
see
it,
but
unfortunately,
at
this
point
I'm
not
sure
when
that's
going
to
happen,
and
it
might
imply
a
pretty
big
rewrite
of
the
internals,
we're
not
sure
it
was
hoping
to
do
maybe
a
sort
of
an
exploratory
prototype.
This.
D
D
E
A
One
thing
we
should
make
your
choice,
which
is
every
time
we
originally
when
we
had
the
whole
DB
common
conversation
with
the
secret
team.
Might
they
felt
very
strongly
that
this
should
be
involved
with
the
design
of
it,
because
gonna
make
sure
they
can
actually
implement
that
right?
So,
even
if
they
don't
have
resources
to
implement
it,
we
should
at
least
make
sure
they
have
seen
it
in
they're
saying
all
that
will
work
for
us.
A
B
We
have
two
other
provider,
writers,
commenting
and
interacting
on
this,
so
the
Mexico
provider
writer
is
kind
of
involved
in
this,
and
one
of
the
guys
was
actually
submitting
all
the
sequel
time
for
requests.
Rave
to
write.
Also
kind
of
these
are
people
who
are
involved.
We
at
least
get
some
sort
of
triangulation
on
it,
but
I
completely
agree
that
I
mean
the
idea.
Is
that
there's
not
a
sender
pull
request
for
this
tomorrow?
In
any
case,
yeah,
there
is
also
a.
E
Secret
I,
don't
really
does
implement
batching
for
data
set
and
data
table
it
doesn't
it
went
all
the
functionality.
Essentially,
you
can
execute
a
command
at
resonance,
just
rows
affected,
but
you
cannot
execute
the
command
returns
results
right,
like
a
data
reader
using
that
API.
It's
only
that
that
API
is
completely
internal.
Is
you
only
get.
E
A
What
it's
so,
the
one
thing
I
do
by
with
the
DB.
That
recommend
is
that
you
want
something
that
it's
not
a
DB
man,
because
this
is
more
specialized
to
do
the
one
thing
we
should
make
sure
those
that
we
don't
think
we
might
change
our
mind
later,
because
if
we
basically
end
up
in
the
water
we
add
more
and
more
stuff
to
DB
batch
command,
then
you
just
have
duplication
and
then
it's
like
whoa.
No,
if
somebody
wants
to
add
normal
Messer,
we
have
to
remember
to
add.
A
B
Itself
in
general,
you
get
the
results
on
the
match
itself.
We
have
single
DB
data
reader.
So
if
you
have,
you
can
battle
five
selects
in
The
Dispatch
and
you
get
back
at
a
single
DB
data
reader
with
multiple
result
sets,
which
is
how
concatenation
matching
or
any
words
today
or
sometimes
you
can
call
a
short
procedure.
That's
going
to
return
five
result
sets.
So
it's
consistent
with
the
way
gig
that
currently
works.
So
basically.
A
B
B
B
Yeah,
we
ran
into
a
lot
of
trickiness
when
we
try
to
use
DB
command
inside
a
batch,
and
then
the
same
type
can
be
used
inside
of
action
outside
of
a
tree,
ran
into
difficulties
with
the
API,
with
clarity
with
life
cycle
and
dispose
also.
So
what
this
also
proposes
now
that
you
are
executing
a
batch,
an
exception
can
be
raised
and
we
want
to
allow
users
to
know
which
of
the
batch
commands
generated
it.
We're
proposing
adding
a
property
referencing.
B
B
We,
so
that's
not
something
that
would
be
supported
on
the
generic
API
level,
just
like
DB
exception
nowadays
doesn't
have
a
concept
of
that,
but
sequel
exception
does
have
a
concept
of
that.
So
that
would
be
something
I
think
that
would
be
extended
in
this
in
the
specific
provider.
Did
you
consider
making
the
badge
itself
derived
from
DB
coming
derive
from
it
mean
to
be
bad
commander?
The
TV
batch
TV
badge
yeah.
B
For
free
right,
and
then
everybody
just
extends
that
guy,
so
some
okay,
so
it's
one
one
example
is
that
executes
reader
does
not
accept
a
command
behavior,
which
is
something
you'll
find
on
VB
command,
because
we
allow
a
different
command
behavior
to
be
specified
for
each
batch
command.
Inside
of
that
right,
so
that's
an
API
like
you
know,
that's
a
discrepancy.
A
I
mean
this
is
something
that
you
can.
You
cannot
have
to
walk
through
that
in
your
head.
I
guess,
like
I,
don't
have
a
strong
opinion.
It's
just
that
I
would
generally
say
if
there's
only
one
or
two
exceptions.
Maybe
it's
worthwhile
doing
that,
because
then
anybody
can
treated
batches
of
command,
which
might
actually
be
beneficial.
I
was
it
was
not
the
case,
then
don't
but.
B
G
B
B
A
Would
say
within
a
particular
area
like
we
try
to
stay
within
the
area
as
much
as
possible
to
not
have
multiple
patterns
at
once,
because
then
you
over
time
like
it
just
gets
really
complicated
to
reason
about
the
API
but
yeah
in
a
brand
new
area.
We
should
definitely,
you
know,
choose
the
more
appropriate
patterns,
but
here
I
don't
know,
timeout
is
everywhere,
and
eighty
over
an
engine
is
always
it
in.
So
we
should.
A
D
Yeah
Christophe
pulling
up
before
when
I
brought
in
a
thing
that
had
a
property
that
was
returning
a
and
I
some
form
of
collection
is
whatever
gets
returned
in
the
first
version.
Someone
is
going
to
hard
cast
it
and
then,
as
a
breaking
change,
we
will
never
be
willing
to
change
what
it
is.
So
if
you're
always
gonna,
have
it
be
a
list
of
T,
get
rid
of
the
eye
and
be
honest,
but.
A
A
D
B
D
List
of
T,
and
then
they
cast
this
thing,
and
it
did
some
stuff
like
I
mean
their
code
has
worked
now
for
five
years
and
then
you
great
your
provider
in
their
code.
If
we
want
this
to
be
as
I
list
of
the
easy
answer
is
from
the
implementations
in
this
that
we
own
don't
return
the
most
yeah.
Well,
I
meant
the.
A
B
A
Because
if
you
ever,
if
you
ever
want
to
add
a
message
to
this
guy
right,
convenience,
add
overload
or
something
right
that
just
directly
takes
the
string,
for
example,
then
just
be
attached
for
you,
it
would
I
need
you
screw
of
an
interface,
so
the
parameter
list
as
it
follows
that
thing.
So,
there's
a
proper
collection
type,
hey
fzd
was
a
DB
parameter
collection
or
something
when
you
would
have
your
DB
patch
selection,
I.
Think
what
is
the
TV
video.
B
A
It
extends
nothing
actually,
it's
virtually
just
implementing
everything
from
scratch.
I
would
just
probably
extend
collection
of
whatever
my
collection
of
DB
batch.
Then
you
can
just
add
your
own
methods
on
top,
but
these
collection
types
are
designed
to
give
you
interceptors
right.
If
somebody
adds
something
you
want
to
add
something:
okay,
I
can
override
and
there's
a.
B
D
General,
its
and
I
think
as
a
brand
or
when
you're
going
to
read
from
it
and
if
it's
a
property
limits
it
online
you've
picked
a
concrete
type
in
your
implementation.
Just
be
honest
about
it
or
have
like
this.
If
you
instantiate
at
this
guy
it'll
be
less
than
if
you
instantiate
at
this
guy
it'll,
be
you
know
some
others
planted
and
then
at
least
there's
the
book.
You
have
two
options
in
the
Box
one
of
them.
You
could
park
past
you
and
couldn't,
and
we
told
you
it
as
an
interface
I
mean.
A
A
Yet
this
of
array
right
very
basic,
trying
to
be
smart
with
the
innumerable
dog
get
empty
and
we
basically
said
well,
we
always
allocate
the
enumerate
or
so
how
about?
We
give
you
a
specialized
handwritten
version
of
a
new
Google
that
doesn't
do
that
wrong.
Everybody,
because
me,
when
we
returned
an
empty
array
and
people
inadvertently
took
a
dependency
on
the
fact
it's
an
array
because
they
see
all
and
output
and
the
custom
still
does
it
for
the
customer.
A
A
B
As
an
issue,
there's
a
whole
lot
of
text
below
on
how
this
behaves
but
and
how
this
is
going
to
be
used.
But
if
you
want
to
see
how
it's
going
to
be
used
scroll
a
bit
more
down,
because
that's
there's
the
horrible
example
and
a
good
example,
that's
the
very
thing
of
using
it
directly
rather
than
through
the
generic
again.
A
B
A
B
D
B
B
So,
there's
a
bag
from
the
community.
It's
important
to
mention
because
of
this
thing,
because
there
are
some
variable
number
of
results
of
cases
wanted
us
to
return
a
reader
per
batch
command
so
that
it
could
be
easier
to
distinguish
in
boundaries
between
the
commands
which
I
thought
was
so
the
thing
is
that
there
are
other
solutions
to
do
that.
You
can
place
icon
marker.
You
can
do
a
select
one
to
know
what
it's
the
you
can
use
the
shape
of
there.
If
you
know
that
the
shape
of
the
you
know
the
result.
B
D
B
A
D
B
Still
find
out
the
number
of
rows
that
were
updated
by
the
update
good
question
so
that
the
whole
point
there's
another
big
section
here.
One
of
the
specific
goals
here
is
to
allow
non
aggregated
records
affected
right
now,
so
we
want
to
know
for
each
if
you
look
at
the
effect
of
rows
below
so
this
is
why
we
added
on
TV
command
batch
Batman.
Sorry,
we
added
the
records
affected
on
the
command
itself,
which.
B
B
B
B
A
F
D
F
B
Not
on
DB
command,
but
it
is
in
two
other
places
in
the
API.
It
is
the
result
set
of
execute
non
query
and
it's
also
on
DB
data
reader.
So
right
now,
if
you,
if
you
do
execute,
let's
say
whatever
and
you
give
anything
you
get
back
a
reader
execute
reader
on
it.
You
have
a
records
affected
property
which
is
aggregated.
So
you
have
no
idea.
If
you
executed
multiple
things,
you
can't
know
which
one
that's
exactly
the
problem
and.
B
D
Not
to
be
you
know
the
moment
we
make
it
in
someone's
going
to
write
it
and
said
this
is
not
big
enough
for
me
to
go
back
to
the
stored
procedure.
If
you
call
the
stored
procedure
in
it
and
it
does
a
thousand
different
update
statements
that
I
feel
like
in
the
command
window,
it
could
you
know,
like
sequel,
Explorer,
you
see
all
the
individual
numbers.
Is
there
any
way
that
you
get
them
back
and
how
are
you
aggregating
the
result
stream
on
that
one.