def METHOD_NAME(self, init_net, finish_net):
    """From the Dataset, create a _DatasetReader and setup a init_net.
    Make sure the _init_field_blobs_as_empty(...) is only called once.
    Because the underlying NewRecord(...) creats blobs by calling
    NextScopedBlob(...), so that references to previously-initiated
    empty blobs will be lost, causing accessibility issue.
    """
    if self.ds_reader:
        self.ds_reader.METHOD_NAME(init_net, finish_net)
    else:
        self._init_field_blobs_as_empty(init_net)
        self._feed_field_blobs_from_db_file(init_net)
        self.ds_reader = self.ds.random_reader(
            init_net,
            batch_size=self.batch_size,
            loop_over=self.loop_over,
        )
        self.ds_reader.sort_and_shuffle(init_net)
        self.ds_reader.computeoffset(init_net)