►
From YouTube: Entity Framework Community Standup - Sept 2nd 2020 - Sync your database with DotMim.Sync
Description
The maintainer of open source software solution DotMim.Sync joins the EF Core team to discuss how the project helps keep local relatinal databases in sync.
Community Links: https://www.theurlist.com/efcore-standup-2020-09-02
Featuring: Sébastien Pertus (@sebpertus)
#EntityFramework #EFCore
A
A
And
we
are
live
and
streaming
welcome
to
another
edition
of
the
entity
framework
community
stand
up.
We
have
a
very
interesting
topic
today
that
I
get
a
lot
of
questions
about.
We
as
a
team
get
a
lot
of
questions
about
we're,
going
to
be
talking
about
synchronizing
your
database
using
an
open
source
tool,
but
before
we
jump
into
that,
I
want
to
introduce
some
of
the
team
members
that
are
online.
My
name
is
jeremy
likness.
I'm
a
pm
on
the.net
team
for
data
and
sebastian
is
our
guest.
B
Hey
jeremy,
so
my
name
is
sebastien,
I'm
I'm
from
france.
So
that's
why
we
have
this
strange
accent.
So
I'm
part
of
microsoft,
I'm
working
in
the
in
the
csc
organization,
the
commercial
software
engineering,
so
I'm
working
for
eight
years
at
microsoft
and
I'm
the
author
of
this
framework
of
synchronization
so
glad
to
be
here
with
you.
Thank
you
very
much.
C
Yep,
so
I'm
shy,
I'm
a
member
I'm
an
engineer
on
the
ef
team.
I
also
work
more
generally
on
data,
so
you
know
system
data,
database
access
apis
and
you
know.net.
I
have
a
specific
focus
on
perf
I
would
say-
and
I'm
also
I
do
a
lot
of
work
on
postgres
support,
where's.
The
postgres
support
by
the
way.
D
A
Awesome
well,
let's
jump
into
some
show,
links
and
then
we'll
get
to
talking
about
synchronizing
databases.
So
let
me
add
my
links
to
the
stream.
Here
we
go
we'll
zoom
in
nice
and
large
for
everyone
and
get
rid
of
some
of
those.
So
the
show
links
were
posted
in
the
chat.
You
can
see
the
url
list
right
here,
ef
core
standup
2020.,
so
the
first
thing
is
a
little
bit
of
a
selfish
link.
This
is
a
survey
that
I
have
posted
up
on
the
dev
blog
site.
A
So
I
assume
several
of
you
listening
in
deal
with
data
and
you
may
be
working
with
big
data
and
we
are
working
on
making
the
experience
with
bigdatafrom.net
as
magical
and
easy
and
straightforward
as
it
can
be.
So
we
would
really
love
to
hear
your
opinion.
If
you
can
take
the
survey.
Just
ask
some
questions
about
how
you
use
big
data.
What
context
you
use
it
in
what
tools
and
really
gives
us
feedback
so
that
we
can
take
our
net
for
spark
product
and
make
it
even
better.
A
So
that's
the
the
first
link
for
that.
D
Hey
jeremy,
yes,
just
what
is
big
data
and
what
is
spark
just
a
really
quick
overview.
A
Yeah
sure
so,
big
big
data
is
one
of
the
few
industry
terms
that
literally
describes
itself
right.
So
it's
dealing
with
large
volumes
of
data.
It
could
be
terabytes
petabytes
of
data,
and
usually
we
we
classify
data
with
what
we
call
three
v's.
So
there's
velocity
how
fast
the
data
is
moving
and
changing
variety.
The
differences
in
schema
and
volume,
the
amount
of
data
and
big
data
scenarios
are
usually
pretty
high
across
all
of
the
v's
spark
is
a
open
source
engine
for
dealing
with
big
data.
A
It
allows
you
to
write,
queries
and
pieces
of
code
that
shape
and
modify
the
data
so
that
you
can
take
a
large
fire
hose
and
shape
it
into
something
manageable,
so
that
you
can
drive
analytics
prediction,
etc
and
then
dot
net
for
spark
is
our
product
that
allows
you
to
use
c-sharp
to
build
spark
jobs.
For
that
awesome,
thanks
very
good.
The
next
link
we
have
I
enjoyed
reading
this
one.
This
talks
about
using.net
standard
with
ef
core
3.1,
so
you
can
pull
entity
framework
core
into
your
project
and
use
it.
A
D
A
That's
awesome.
Let
me
come
back
here,
tree
structure
and
ef
core.
So
this
is
our
favorite
thing
to
work
with
in
a
database
is
a
self-referencing
hierarchical,
recursive
inverted
structure,
but
this
blog
tells
you
how
to
basically
configure
a
self-referencing
table
and
and
use
it
in
entity
framework
core.
A
And
he's
got
a
ton
of
code
to
help
implement
the
pattern
as
well
so
be
sure
to
check
that
one
out
and
then
we've
got
this
one,
which
a
good
friend
of
mine,
peter
shaw,
ran
into
a
little
bit
of
an
issue
with
he
basically
had
a
sql
server
project
and
he's
got
mostly
a.net
core
pipeline,
but
he
had
this
legacy
project
that
sql
server
and
it's
basically
a.net
framework
project.
So
he
was
having
some
challenges,
plugging
it
into
his
continuous
integration
and
delivery
for
builds.
So
he
was
able
to
resolve
it.
A
D
D
So
a
database
project
creates
something
called
a
dac
pack,
which
is
just
a
I
don't
know
you
can
think
of
it
as
a
binary
format
for
the
database
schema
and
then
there's
an
extension
that
you
can
reverse
engineer
a
model
from
that
into
ef,
and
so
the
new
thing
here
is
that
you
can
build
that
backpack
outside
of
visual
studio
and
outside
of
net
framework.
Ms
build,
and
so
I
think
I
think
someone
even
had
like
a
ci
pipeline
running
on
linux.
Building
that
thing,
which
is
really
cool.
B
B
Oh
go
ahead,
sorry,
but
and
by
the
way,
the
fact
that,
with
the
server
project
you're
able
to
you,
know
to
save
it
in
your
git
repository
and
versioning,
and
so
on.
That's
your
one
of
the
most
powerful!
You
know
tool
to
to
track
your
change
in
your
schema
of
your
database,
because
otherwise
it
was
so
complicated.
A
Yeah
I
remember
when
I
was
working
at
another
company
and
gosh.
This
was
early
2000s
and
we
were
using.
I
think
it
was
called
sql
data
objects
or
it
was
a
basically
an
sdk
api
into
sql
server
and
we
were
manually
inspecting
the
database
generating
scripts
saving
them
off.
So
we
could
have
them
in
source
control
and
basically
we'd,
take
a
snapshot
and
then
do
a
delta,
and
it
was
a
lot
of
manual
work.
So
it's
nice
to
see
that
we've
evolved
to
some
native
support
out
of
the
box.
A
If
you
will
get
back
over
here
and
then
the
big
announcement.
So
this
is
huge
entity
framework,
core
5
preview,
8,
and
the
reason
why
this
is
so
huge
is
this
is
the
last
preview
before
we
go
to
release
candidate
and
a
lot
of
features
in
there.
There's
the
big
ascii
art.
Thank
you
because
we
hit
and
at
the
bottom
of
our
post,
we
like
to
call
this
out,
because
this
product
would
not
be
possible
without
our
contributors,
and
it
is
a
long
long
list,
almost
a
hundred
contributors
to
this
project.
A
D
I
just
want
to
say
on
the
community,
like
those
contributions
range
from
fixing
a
typo
to
implementing
like
table
value
function,
support
it's
like
in
saying
the
range
of
contributions.
It's
really
cool
and.
A
And
we
got
a
little
oh,
my
cursor's,
on
the
wrong
side.
We
got
a
little
shout
out
here.
Woohoo
queryable
functions
love
it.
A
Some
skin
in
the
game
awesome,
I
wonder
who's
responsible
for
that
one,
and
then
we
have
dot
mimsync
and
I'm
not
going
to
spend
too
much
time
on
this
because
we
have
the
owner
the
builder
the
contributor,
the
maintainer
right
here
with
us.
That's
sebastian!
So
sebastian
I'm
going
to
hand
it
over
to
you.
Yes,.
B
C
B
Okay,
so
oh
we
have
it's
keeping.
So
let
me
just
start
again
the
sharing
screen,
so
we
we,
let's,
okay,
it's
better.
B
Yeah
we
go
so
so.
Basically
I
just
I
don't
want
to
go
too
deep
in
the
detail,
but
maybe
a
lot
of
you
have
already
experienced
the
you
know,
the
the
the
the
old
scene
framework
stuff
or
maybe
the
sequel,
server
merge
replication.
So
in
both
case
we
have
some.
You
know
really
great
features,
and
you
know
some
caveats
like
you
know,
for
the
sql
server
merge
your
application,
it's
only
working
for
sql
server.
B
The
thing
fresh
mark
is
quite
old,
but
you
know,
since
it's
not
maintained
anymore,
it's
only
working
on
the
on
the
on
the
net
framework
and
just
for
sql
server
and
secrecy.
So,
basically,
today
the
solution
to
make
you
know
a
synchronization
between
two
databases.
It's
quite
complicated,
let's
say
with
one
server
databases
and
a
lot
of
clients,
databases,
it's
quite
complicated.
So
this
is
why
I
have
created
this
framework.
So
I've
started
this
side
project-
maybe
I
don't
remember,
maybe
nine
years
ago,
even
before
being
hired
by
microsoft.
B
So
basically,
the
deal
is
to
you
know
to
get
to
get
the
the
best
features
from
all
the
synchronization
framework
I
have
experienced
so
far
so
and
in
the
in
the
easiest
way-
and
you
know
the
easiest
way
in
the
development
is
the
more
hardest
things
to
do
so
this.
So
the
goal
is
to
one
friend
of
mine
has
asked
me
one
day:
he's
not
you
know
a
data
engineer
or
whatever
he
just
don't
like
data.
B
For
some
reason
he
said
you
know
what
sebastian
I
will
use
your
framework
only
if
I'm
able
to
make
a
synchronization
with
less
than
five
lines
of
code,
so
that
was
the
the
first
step
for
me
being
able
to
make
a
synchronization
framework
with
the
hello
sync
world
with
less
than
five
minus
code.
So
we'll
see
if
I,
if
I
succeeded.
B
No
pressure,
basically,
this
framework
is
built
on
top
of
dotnet
from
the
standard.
So
because
of
that,
it's
work,
it's
work.
It's
working
on.
You
know
any
kind
of
runtime
that
is
supporting
the
netsunder,
like
you
know,
xamarin.net,
obviously
you
know
uwp
desktop
application
and
so
on
and
so
on
and
all
the
providers,
the
rational
databases
provider
that
is
currently
supporting
the
ado.net
provider.
You
know
core
provider.
So
today
we
have
not
so
much
provider
because
I
don't
have
the
time
to
write
all
of
them.
B
Okay,
so
you
can
mix
all
of
them.
You
can
have
a
mysql
syncing
to
sqlite
application
databases
or
you
can
have
a
sql
server,
syncing
to
mysql
and
sqlite
and
so
on
and
so
on.
So
basically
you
have
one
hub.
This
is
a
server
and
you
have
all
the
clients
behind
the
scene.
So
if
we
go
deeper
in
the
in
the
technique,
you
have
some
maybe
some
keywords
that
you
will
recognize
that
is
coming
from
the
whole
thing
framework
like
the
sync
agent
for
all
of
you
that
have
already
used
this
kind
of
framework.
B
You
have
already
done
seen
this
this
keyword,
but
honestly
beyond
the
thing
everything
has
changed,
so
you
know
it's.
Basically,
it's
completely
different,
so
you
have
the
documentation
here
and
obviously
the
code
is
on
my
github
repository.
Everything
is
open
source
and
I'm
still
searching
some
motivated
guys
to
help
me
to
you
know,
go
to
the
final
1v1
version
today.
The
framework
is
full
feature,
so
I'm
just
trying
to
debunk
all
the
books
and
you
believe
me.
We
have
a
lot
of
bags.
B
Okay,
so
I
think
I
would
show
you
some
samples
about
how
it's
working
and,
let's
see
if
we
are
able
to
make
this.
You
know
less
than
five
lines
of
code
to
you
know
to
work,
so
I'm
working
on
visual
studio
and
just
to
be
a
little
bit
faster.
I
just
you
know,
create
this
template
for
all
the
bothering
things
that
we
don't
want
to
type
like
the
connection
string
and
you
know,
and
all
the
the
call
to
the
to
the
to
the
main
mentor.
Okay.
C
B
D
B
So
here
we
go
so
the
first
things,
so
I
have
some
server
connection
and
they
are-
and
I
am
a
free
client
connection
to
you-
know-
to
connect
to
different
kind
of
databases
like
sql
server,
mysql,
even
sqlite,
so
we'll
see
later
just
for
the
demo.
I
have
some
adventure
works
sample
so
I'll
just
have
a
big
big,
big,
big
script.
That
will
create
the
databases
for
us.
B
So,
let's,
let's
let's
execute
it
so
during
this
time
we
will
just
so
so
far.
We
will
just
add
the
nuget
package
that
we
need
to
be
able
to
run
everything
so
go
to
packet
manager
and
make
a
quick
search
on
this.
B
There
we
go
so
we
have
a
lot
of
packages
that
you
can
add
as
a
reference.
So
basically
you
have
the
core
that
is,
you
know,
used
by
all
of
the
providers
and
then
you
are
sql
server.
You
have
sqlite,
you
have
mysql
and
you
have
even
the
sql
server
change
tracking
the
web
server
is
a
special
provider
that
allows
you
to
protect
your
your
server
behind
the
web.
Api
we'll
see
a
little
bit
later,
but
just
for
this
same
validity
we
gonna
use
the,
for
instance,
we're
gonna
use
the
the
change
tracking
package.
B
So,
let's
add
it
and
which
one
do
you
want,
which
one
do
you
want
to
use
as
a
client
we
can
use
mysql
sticker,
highlight
or
even
another
sequel
server.
If
you
want.
B
B
You
know
simple
tables
and
we
have
nothing
in
the
store
procedure
and
nothing
else
where
just
because
we
want
to
use
the
chance
tracking.
I
was
just
you
know.
B
Yeah
cool,
so
let's
go
let's:
let's,
let's
go
so
I
have
a
dual
just
you
know
for
making
my
my
loop,
so
we
make
a
connection:
the
server
provider,
it's
a
new
sql,
sync
provider.
So
we
have
the
change
tracking
here
and
we
have
the
connection
string,
server,
connection
stream.
So
nothing
really
fancy.
We
have
the
client
provider,
that
is
a
new
sequel,
light.
Mexico
light
sync
provider
and
we
have
the
client's
connection
string
somewhere.
B
What's
the
name
I
have
I
didn't
uncomment.
So
obviously
the
intellisense
is
not
magical.
Here
we
go
and
then
we
want
to.
We
want
to
to
synchronize
some
tables.
So
I
have
made
a
list
of
the
table.
I
want
to
synchronize.
B
Obviously
you
can
choose
the
tables
you
want
to
synchronize,
it's
not
mandatory
to
synchronize
all
the
the
table
from
your
database,
but
for
this
sample
I
will
try
to
synchronize
all
the
papers.
So
I
have
the
papers.
Then
I
will
create
an
agent.
The
agent
is
here
to
you,
know,
get
the
the
server
and
the
client,
so
we
have
let's
make
a
using.
B
Okay,
okay,
maybe
under
under
the
loop
outside
the
loop
that
will
be
okay
and
then
we
gonna
do
the
wizard.
We
call
adjunct
dot
synchronize.
I
think
it's
a
it's
a
it's!
It's
an
async
method,
so
make
an
away,
and
we
make
a
console.writeline
of
the
wizards.
B
Hopefully
it's
compiling
here
we
go,
oh
god,
it's
taking
some
time.
A
B
Okay,
okay,
yeah
yeah,
maybe
the
the
online
is
that
so
I
can
start
getting
my
machine.
So,
let's
see
if
it's
working
there
we
go
so
the
sqlite
database
will
be
created
on
the
fly
and
we
will
you
know
getting
all
the
data
from
the
server
side
and
also,
let's
start,
let's
press
start
and
we
will,
you
know,
create
all
the
underlying
stuff.
We
need
to
make
the
synchronization
happening.
So
let's
wait
a
couple
of
seconds
for
obviously,
for
now
you
don't
have
any
output
on
the
console
because
we
don't
have.
B
You
know,
write
the
code
to
handle
the
the
events
that
are
raised
during
the
synchronization,
but
we
we
made
everything
all
gone.
Sorry,
please
forgive
me.
I
made
a
little
mistake
because
I'm
using
a
table
that
is
already
existing,
so
let's
say
client
tool.
Let's
run
again.
B
So
yeah
it's
working
so
a
little
bit
less
than
six
seconds
to
synchronize
everything.
So
let's
go
back
into
the
database
for
for,
let's
make
a
refresh,
so
we
have
the
only
thing
we
have
added
here.
So
apart
from
the
the
chain,
shopkins
stuff
is
to
add
a
couple
of
tables
here,
so
this
table
are
just
here
for
historical
reason,
so
it's
just
logging
and
so
on
and
we
are
using
in
the
some
stored
procedure
that
allows
me
to
make
all
the
synchronization
between
your
client
and
the
server
databases.
B
So
obviously,
if
we
are
looking
at
the
built-in
port,
we
are
using
the
you
know
the
this
change,
the
change
tracking
stuff
and
the
magic
merge
statement
to
make
a
a
good,
a
good
synchronization
process.
A
B
Yeah,
absolutely
so
you
don't
have
to
you:
don't
have
to
create
the
schema
on
the
client.
Obviously
the
schema
has
to
exist
on
the
server
side.
Obviously,
but
the
client
will
be
automatically
created
for
you
if
you
have,
if
you
don't
have
yet,
if
you
don't
have
already
schema
available
so
yeah,
so
it
will
be
created
for
you.
B
So,
for
instance,
if
we
are
going
into
this
for
the
oh
this
one,
so
as
you
can
see
here,
the
the
the
tables
are
created
for
you,
the
indexes
and
even
the
triggers,
because
we
are,
we
don't
have
the
change
tracking
features
on
the
on
the
sqlite
database.
So
that's
why
I'm
using
you
know
some
triggers
to
you
know
to
trigger
the
changes
on
the
database
and
some
and
even
some
tracking
tables
to
mimic
the
the
change,
the
change
tracking
strategy.
B
So
but
honestly,
you
just
have
all
your
data
in
your
in
your
database
right
now.
Okay,
so.
E
B
Let's,
let's
make
a
quick,
a
quick
change,
so
orlando,
let's
say
greece,
and
we
are
just
you
know
we
are
just.
Should
I
oh
it's.
Okay,
that's
good,
so
we
have
just
made
one
change
in
the
in
the
client
database.
I
I
have
to
close
to
be
sure
that
I
don't
have
any
luck
and
if
I
just
hit
enter,
I
will
just
you
know
upload
one
thing
online
into
the
server
databases.
So
everything
is
under
for
you.
B
B
It
was,
it
was
a
customer
here
we
go
there,
it
is
so
basically
in
the
in
the
in
the
in
the
two
way
you
can.
Obviously
you
know,
let's
say
you
can
for
the
sales
order
detail.
Let's
you
know,
let's
make
a
quick
test,
so
the
details
we
can
say.
Okay,
let's
delete
all
of
this.
Here
we
go
okay,
so
I
made
one
change,
I'm
doing
on
the
client.
Now,
let's
try
on
the
server
and,
let's
see
if
it's
working
here
we
go.
B
E
A
B
A
B
Yeah
so
basically
the
provider,
the
the
the
framework
is,
is
built
on
on
the
id
to
synchronize
relational
databases.
So
it's
not
working
for
nosql
databases
because
you
know
nosql.
I
don't
have
this.
This
schema
constraints
that
we
have
in
the
in
the
rational
databases.
So
it's
quite
complicated
to
you
know
to
undergo
the
situation,
because
you
know
it's
like
how
nosql
databases
are
working
today.
So
there's.
D
B
Relationship
between
no
secret
database
in
the
in
this
world.
D
But
also
tied
to
ado.net,
which
probably
most
no
sql
databases,
don't
have
an
idiot,
no
net
provider.
So
we
can,
you
repeat,
please
the
framework
tied
to
ado.net.
Yes,.
B
B
Here
we
go
so
we
can
so
obviously
now
we
have
something
that
is
running,
but
you
know
we
have
a
lot
of
method
and
and
an
option
you
can
use
for,
for
instance,
let's
say
you
want
to
have
a
progression
that
you
want
to
well
that
you
want
to
grab
the
feedback
from
the
from
the
framework,
so
you
can
say
hey.
I
want
to
have
a
feedback
on
the
on
the
on
the
process.
B
So
let's
say
I'm
just
adding
this.
You
know
the
high
progress
of
t.
That
is
something
that
we
used
to
use
in
this
async
world.
So
just
because,
just
thanks
to
that,
I'm
just
you
know
we
are
playing
everything.
So
now
we
have
some.
You
know
information
that
is
coming
from
the
from
the
framework
to
see
what
happened
behind
the
scene.
Let's
say
I'm
just
trying
to
once
again
delete
some
lines,
so
here
we
go
and
we're
gonna
we
gone
hot,
maybe
one
line
or
or
edit
one
another.
B
So
let's
go
back
to
to
john
here
we
go
and-
and
let's
say
that
I
will
edit
the
same
line
in
the
sql
light.
You
know,
let's
go
back,
yeah
and
open
the
databases
once
again
here
we
go
so
we
address
somewhere
in
the
customer
and
we
changed
it
to
john
on
the
server.
But
here
we
are
gonna
change
to.
I
don't
know
to
jeremy
okay.
B
So
we
have
a
problem
here
right
because
which
one
will
warm
the
wall
should
we
have
or
should
we
have
jeremy,
because
we
need
to
be
thinking
so
we
need
to
have
the
same
rows
in
on
the
server
and
on
the
client
as
well.
So
what
happen
if
I'm
making
a
synchronization
right
now?
So,
let's
see
wow,
let's
see
so,
let's
launch
again
so
we
have.
B
We
have
uploaded
one
thing:
we
have
downloaded
15
things
and
we
have
resolved
one
conflict,
so
it
seems
that
we
have
a
conflict
and
it
was,
you
know,
automatically
resolved
for
you
by
the
framework
with
the
default
rule
and
the
default
rule
is
the
server
is
always
winning
you
know.
So,
if
I'm
just
refreshing
here,
I
still
have
john
and
if
I'm
coming
into
the
sqlite
databases,
let's
see,
I
have.
B
B
Okay,
so
the
server
has
winning
the
war,
because
by
default
the
server
is
always
the
the
other
way.
The
truth.
Obviously,
if
you
want
you
can
overreach
this
all
right,
override
this
rule
and
say
no,
I
want
to
be.
I
want
the
client
to
to
be
the
winner
or
you
even
can
have
you
know
a
merge
strategy,
so
you
just
have
to
you
know
to
to
to
raise
an
event,
and
you
know
making
your
own
change,
but
it's
a
little
bit
advanced
for
don't
want
to
go
too
deep
today.
C
C
Is
if
I
want
to,
I
obviously
just
take
the
client
version,
the
server
version.
These
are
the
the
obvious
and
the
easy
ways,
but
if
I
want
to
actually
go
into
it
and
start
to
apply
rules
when
to
prefer
which
kind
of
thing
based
on
you
know
my
business
requirements,
then
I
can
kind
of
hook
into
some
sort
of
callback
and
tell
you
exactly
what
to
do.
B
Yes,
absolutely
so
you
have
a
callback
that
is
the
unapplied
change
failed
and
then
on
this
supply
chain
page,
you
will
have
all
the
arguments
to
resolve
your
conflict.
You
will
have
the
local
role
here.
We
have
the
remote
rule,
you
will
have
the
table
name
and
you
will
have
a
final
rule.
That
is
what
you
want
and.
B
Okay,
so
you
have
in
the
in
the
documentation.
I
just
can't.
Thank
you.
So
big
schema,
you
know
a
big
schema,
but
the
solution
is
quite
simple.
Here
we
go,
let's
see
it's
here,
we
go
so
you
are
this
kind
of
thing.
You
know
you
have
a
conflict.
If
the
conflict
is
opening
on
the
table
region,
you
can
make,
you
know
a
match.
B
Oh
no,
every
time
I
say
if
you
want
the
documentation
just
clone
the
code,
look
at
the
secret
server
provider,
it's
the
most
straightforward
and
just
you
know
making
it
so
I'm
actually
working
on
the
postgreway
provider,
but
I'm
not
good
at
postgre.
Actually.
But
if
you
are
someone
who
wants
to
help
me,
that
would
be.
You
know
shy.
E
B
B
Let's
do
it
so
obviously
we
are
in
this
tcp
world.
You
know
where
you
have
access
to
the
sql
server,
but
in
the
real
world,
if
you
have
a
xamarin
application,
you
won't
have
access
to
this
to
the
network.
You
know
that
it's
making
things
part
of
you,
so
that's
why
we
need
to
protect
our
synchronization
behind
the
web
api.
Okay.
B
So
let's
do
it
so
I
have
a
here.
I
have
a
small
web
api
that
I've
already
created.
You
know
it's
it's
an
empty
one,
just
once
again,
just
to
be
a
little
bit
faster.
So
in
this
api
I
have
a
steam
controller
here
that
I've
created-
and
I
it's
just
you
know
an
empty
one.
Okay
and
I
will
just
have
let's
say
here:
we
go
management
package,
so
this
is
where
coming
into
the
game,
the
special
web
provider.
B
B
Okay
and
we're
gonna
we're
gonna,
install
the
sql
server
chain
tracking,
because
this
is
the
one
that
we
are
using
for
our
server
database
right.
So
let's
install
this
one.
Okay,
this
is
the
only
thing
we
need
to
install.
We
don't
need
the
sql
light,
because
on
the
server
side
we
don't
have
any
sqlite
database.
The
lighter
on
the
client
side
right
right,
okay,.
B
Here
we
go
there,
we
go
so
it's
installed.
Hopefully
so
in
the
startup
we
have
a
quite
common
startup.
You
know.
The
only
thing
I've
already
done
is
to
you
know
to
get
the
connection
string
from
the
configuration
section
and
get
the
table.
You
know
just
because
it's
boring
to
write
this
long,
long
string
array.
So
now
we
can
have
so
basically
in
the
asp.net
core
world,
we
are
working
with
dependency
injection,
so
we
have
something
that
allows
you
to
add
sync
server.
Here
we
go
of
type
sql
change,
tracking
sequel
change,
striking.
B
Oh
god
sebastian.
Please
connection
string
and
papers.
Here
we
go.
That's
it.
You're
done
almost
done
so
go
to
the
scene
controller.
So
the
sync
controller
is
a
basic
controller.
So
the
why
I
choose
to
use
the
controller
for
this
framework
is
because
you
are,
you
are
allowed
to
protect
your
web
api,
like
you
do
every
day
for
any
kind
of
api.
You
know,
I'm
just
you
know
relying
on
this
stuff
for
you.
So
if
you
want
to
make
a
br
token,
auto
text
authentication
feel
free.
B
Just
you
know
I
just
have
to
be
inside
a
web
application.
So
let's
make
a
quick,
so
the
instance
that
you
will
get
the
web
server
manager
and
the
c
server
manager.
Let's
call
web
server,
make
manager
quick
use
here
we
go
and
the
only
thing
you
have
to
do
to
make
it
running
is
say:
hey
await
this
handle
and
the
request
that
is
coming.
This
is
the
only
thing
you
have
to
do.
It's
done.
Your
provider
is
able
to
speak
with
any
kind
of
client
through
the
web
api.
B
So
let's
make
a
quick,
you
know
reformatting,
so
we
don't
care
about
the
quote
and
because
we
are,
we
are
returning
a
task.
We
don't
have
to
wait.
Obviously,
okay,
you
don't
have
to
feel
the
gut.
I
think
it's
working
now
we'll
see,
but
if
you
do
it,
you
will
have
just
you
know
a
debug,
a
debug
web
page
to
see
your
if
your
configuration
is
working
correctly.
B
So,
let's
see,
let's
see
if
it's
working,
so
let's
make
it
as
the
star
project.
Here
we
go.
Let's
make
a
control
f5,
because
we
are
not
afraid
about
the
bugs
and
let's
see
if
it's
working,
so
I'm
still
using
a
preview
of.net
core.
Thank
you
very
much.
A
B
B
B
So
yes,
so
here
is
the
the
the
the
web
uri.
I
need
to
use
localhost
blah
blah
blah
api
thing.
I
have
all
my
databases
that
is
running
so
it's
you
know.
If
you
have
some
red
lines,
you
have
some
problems,
but
for
now
everything
is
blue.
So
I
guess
everything
is
correct
on
the
server
side,
so
we
can
close
this
one
go
back
into
the
client
application.
B
I
am
on
it.
So
let's
say
I
want
to
synchronize,
so
I
don't.
I
don't
need
any
more
the
server
side
right.
I
just
need
so
the
this
one.
Let's
remove
fiddler.
B
So
this
this
this
uri
is
the
one
that's
a
copy
pass
from
the
on
my
browser,
so
I
don't
need
the
server
side
now
I
just
oh,
I
need
to
add
the
the
package
for
the
web
client
part.
So,
let's
add
it
here.
We
go.
B
Okay,
here
we
go
so
now.
The
server
provider
is
a
web
client
web
client
orchestrator.
Oh
my
gosh,
and
we
just
need
the
the
uri
this
s1.
Okay.
So
far,
we
don't
need
the
tables
because
the
tables
are
described
on
the
server
side.
So
if
you
are
using,
you
have
your
xml
application.
Don't
have
to
does
not
have
to
know
the
tables.
You
know
everything
is
is
maintained
by
the
server
side,
so
we
don't
need
the
table
and
all
the
the
rest
of
the
code
are
still
the
same.
B
B
Here
we
go
so
press
enter
to
start
and
okay,
let's
see
so
we
have
a
session
that
is
beginning.
We
are
oh
yeah
make
your
staff
guy.
So
we
are
loading
guests.
We
are,
we
don't
have
any
change
on
the
local
folder.
Obviously,
because
we
just
created
the
rows,
and
here
we
go.
We
have
all
the
rows
in
the
background
and
if
you
look
at
the
you
know
at
the
request,
we
just
have
three
requests.
B
You
know
just
three
requests,
because
we-
because
I
tried
to
under
on
the
previous
version
I
had
more
than
20
requests.
It
was
a
little
bit
too
much
and
now
we
just
have
three
requests
and
we
have
all
the
json
files.
So
it's
a
it's
a
it's
a
lot
of
rows
right.
You
know
and
it's
small
but
data
databases.
B
Can
you
imagine
what
happened
if
you
have
one
gigabyte
of
rows
to
to
synchronize
yeah,
the
request
will
timeout
for
for
sure
it's
just
not
possible,
but
for
now
it's
working.
You
know
right,
it's
working,
we
have.
We
have
something
that
is
running
locally,
that
is
synchronized
through
a
web
api
and
if
you,
if
you
are
just
you
know,
hitting
again,
let's
see
we
don't
have
anything,
and
you
know
the
the
two
requests
are
just
been
sent
with
an
empty
and
here
answer.
B
B
C
So
maybe
I
can
jump
in
and
ask
about
that.
I've
been
wanting
to
ask.
I
mean
typically,
if
you're
on
a
mobile
you're,
not
necessarily
going
to
suck
the
entire
database
from
the
server
you're
going
to
get
your
users.
You
know
your
users
data,
so
the
question
is:
is:
is
there
a
way
here
to
filter?
How
does
this
work.
B
Yeah,
so
you
can
set
what
we
are,
what
I'm
calling
a
filter.
So
you
have
something
called
sync
filter.
You
know
filter
one,
a
new
thing
filter,
so
I
guess.
Oh
here
we
go
and
the
thing
filter
you
will
have
to
you
know
to
fill
the
the
table
name
so
let's
say
customer
and
you
will
have
to
have
a
bunch
of
things
like
you
know,
like
the.
B
B
Okay,
so
if
you
have
time
at
the
end,
I
can
show
you
the
quick
demo
on
that.
But
yeah
filtering
is
possible
and
obviously
all
you
you
know
client
database
should
use
this
kind
of
filter
to
be
sure
that
you
want,
you
know,
replicate
all
the
rules
from
your
server
side,
yeah
so
yeah.
So
I
was,
I
was
you
know
trying
to
you
know
to
handle
the
whole
rows
and
you
know
to
be
sure
that
we
don't
have
this.
B
You
know
this
big
request
that
we
should
happen
when
you
have
more
roads
than
just
two
thousand
and
what
we're
gonna
do.
So
it's
it's
the
the
client,
the
client
is
asking
to
say:
hey.
I
am
xamarin
application.
My
my
my
feeling
about
that
is
quite
different
from
the
application
that
is
running
on
the
local
internet.
I
want
as
a
client.
I
am
I'm
asking
to
the
server
hey.
Please
don't
do
that,
so
I
will
create
an
option
object.
B
That
is
a
sync
option.
Object
sync
option
here
we
go
and
in
this
sync
option
object,
you
have
a
bunch
of
you
know
of
off
option.
One
of
them
is
the
batch
size
that
will
that
we
were
gonna
use,
but
you
have
some,
you
know,
other.
B
You
know
useful
information
like
changing
the
name
of
the
table,
changing
the
name
of
the
stop
procedure,
prefix
and
suffix
and
so
on.
But
for
the
time
being
just
say:
hey
batch
size,
batches,
equal,
let's
say
100,
it's
it's
100,
it's
more
or
less
100.,
it's
depending
on
the
compression,
depending
on
the
format,
the
converter
and
so
on.
So
let's
say
it's
more
or
less
okay,
so
a
good.
B
A
good
advice
for
the
production
is
between,
let's
say
three
thousand
and
five
thousand,
but
for
the
demonstration
we're
just
going
to
a
ridiculous
one
that
is
100
and
we
say:
okay,
let's
use
this
option
in
the
synchronization
process.
Here
we
go.
B
C
B
B
So
if
I'm
making
the
the
synchronization
right
now
because
we
already
did
earlier,
I
don't
have
any
rows
to
synchronize
right.
So
the
solution
is
create
a
new
database,
okay
for
the
four
or
we
can
ask
for
the
synchronization
a
just,
because
I
had
a
problem
on
the
client
database.
Just
please
re-download
everything.
B
I
don't
care
about
the
existing
data.
Please
re-download
everything
for
me,
so
we
have
here
a
sync
same
type.
That
is
an
immigration.
Let's
make
it
the
using,
and
we
have
this.
You
know
this
argument,
so
you
can
say
hey.
This
is
normal
one!
Please
download
everything
and
you
know
we
will
reapply
everything.
We
don't
care
about
the
client
rows
or
we
have
the
okay.
You
have
to.
We
don't
know
the
best
thing,
but
please,
if
I
have
some
rows
in
this
dirty
mode,
try
try
to
upload
them
to
the
server.
B
B
D
B
B
Hopefully
so
we
have
a
new
session
so
because
we
are
going
to
renationalize
everything
we
are
going
to
reap.
We
download
everything,
and
so
the
server
is
you
know
making
stuff.
So,
let's
see,
oh
we
have
some.
We
have
a
lot
of
requests
behind
the
scene
that
is
actually
running,
and
here
we
go.
We
are
applying
on
the
on
the
local
store.
So,
as
you
can
see,
the
biggest
tab
was
the
the
project
and
the
project
was
spread
across.
You
know.
B
A
lot
of
you
know
match
files
and,
as
you
can
see
on
my
fiddler
twas,
you
just
have
some.
Quite
you
know
not
a
smaller
request.
We
have
more
requests,
but
they
are
smaller
and
you
know
it
allows
us
to
download
all
the
information
without
having
this
big
big,
big
request
that
is
coming
in
the
in
the
in
the
http
pipeline
cool
and
obviously,
if
we
are
18
hitting
the
button
once
again
once
again,
because
we
still
have
the
awareness,
reinitializer
keyword,
we
still
continue
to
download
again
and
again
and
again
and
again.
A
That's
that's
it
for
me,
so
I
do
have
a
question
for
you.
One
of
the
things
that
comes
up
is
the
framework,
looks
great,
very
easy,
straightforward
to
use
very
performant.
What
does
it
look
like
in
production?
Do
you
have
customers
using
it
at
scale?
Do
you
have
any
stories
you
can
share
about
its
use
in
the
the
wild
so
to
speak?.
B
Yeah,
so
I
have
already
some
crazy
and
full
people
that
are
using
the
framework
in
production,
so
one
of
them
is
in
australia.
It's
the
fire,
help
me
please,
the
firefighters,
the
fires
fire
that
are
using
this
this
synchronization
framework,
because
when
they
are
on
site
fighting
the
fire,
they
have
their,
you
know
their
devices
and
they
don't
have
the
4g
or
whatever.
So
they
may
have
all
the
data
on
their
device.
So
it's
a
gaming
application
and
it's
working.
It
seems
that
it's
working
nice
yeah
so
and
by
by
the
way.
B
So
I
have
a
couple
of
other
examples
from
this
crazy
people
that
is
running
the
the
dms
framework
in
production
and
they
are
helping
me
a
lot
on
the
new
features
and
you
know
on
resolving
the
bugs
and
so
on.
So
I
have
some
new
feature
that
is
coming
on
the
last
version,
like
the
snapshot,
for
instance,
when
you
are
making
the
first
synchronization
the
server
is,
could
be
you
know,
struggle
by
preparing
all
the
you
know.
B
All
the
first
let's
say
commit
that
we
will
send
to
you,
so
we
have
a
new
feature
called
the
snapshot.
If
you
are,
if
you
have
already
used
the
sql
server,
merge
fusion
sync,
you
have
this
concept
of
snapshot,
so
I
just
make
this
new
feature
in
the
in
the
dms
framework.
So
we
have.
Obviously
we
have
the
the
config
resolution.
B
A
Awesome
there
are
a
few
questions.
There's
one
that
came
on
early
in
the
show.
I
wanted
to
wait
to
make
sure
you
didn't
cover
it.
There's
a
question
I'm
using
efcor
in
a
mysql
or
sorry
microsoft,
sql
database.
I
want
to
update
some
fields
based
on
a
csv
file
field.
Do
this
as
a
background
service?
Can
I
do
that
using
the
dot
men
sync
tool?
I
have
some
ideas:
how
that
would
work
but
curious
on
your
job.
B
It's
not
it's
not
meant
to
be
used
like
that,
because
you
know
it's
really
a
synchronization
framework.
So
what
you
want
to
do
is
just
uploading
some
fit
from
a
csv
file
and
and
by
the
way
we
don't
have
the
csv
provider,
because
it's
not
a
rational
databases,
so
I
I
would
say
no.
This
is
not
meant
to
be
used
like
for
this
kind
of
purpose.
A
E
B
Remember,
nice
people.
Yes,
we
have
the
features
in
the
in
the
in
the
dms
framework.
That
is
called
the
direction.
So
we
saw
today
that
we
have
the
b
directional
direction,
but
you
can
set
okay
for
these
tables.
B
I
just
want
upload
mode
only
or
I
just
want
the
download
mode
only
so
if
you
are
changing
a
row,
you
will
be
able
to
upload
it,
but
not
downloading
the
the
result
from
the
server
or
in
the
reverse
side.
You
can
say:
hey
the
client
just
doesn't
have
to
change
the
rows.
So
let's
go
back
for
download
only
okay,
so
maybe
you
can
use
in
this
way.
Why
not?
It's
a
possibility.
A
B
Yeah,
so
basically
the
the
question
is
is
all
about
the
time
zoning
you
know
what's
what's
about.
You
know
the
the
change
tracking,
how
it's
working
and
testing
and
so
on.
So
in
the
last
version
the
server
just
doesn't
care
about
anyone.
You
know
any
client,
you
know
it's,
you
know
it's
a
it's
a
standalone
server
and
you
know
the
client
is
taking
care
of
everything.
The
client
is
sending
what
he
wants
from
the
server
and
the
server
is
just
responding.
B
So
even
if
you
are
losing
your
server
just
you
know
restart
your
last
backup.
You
know
be
sure
that
all
the
metadata
are
in
place
and
all
your
clients
will
be
able
to
to
sync.
So
you
know
you
don't
have
to
bother
about
the
time
zone.
You
don't
have
to
worry
about.
You
know
the
the
the
the
time
stamp
or
whatever,
because
everything
is
entered
by
the
client
itself.
A
B
A
B
I
would
love
to
pause
the
pause.
Wait.
I'm
just
you
know
it's
just
you
know,
I'm
just
starting,
I'm
just
starting,
but
I'm
not
really
good
at
postgre.
You
know,
I
discover
things
every
day
and
if
someone
is
able
to
help
me
it
would
be
such
a
nice
addition
to
the
framework.
A
If
only
we
knew
someone
who
knew
something
about
that
sounds
great
well,
we
are
at
the
the
top
of
the
hour.
So
thank
you
so
much
for
coming
on
and
sharing
this.
This
was
incredible
to
me.
I
think
it's
a
problem
that
a
lot
of
people
face
and
they're
looking
for
solutions.
I
get
questions
all
the
time
about
sync
framework,
so
it's
nice
to
see
that
there's
an
open
source
solution
with
so
much
support
such
high
performance,
so
many
variables
to
tweak
out
there.
So
this
was
really
great
thanks
for
coming
on
board.