Not sure why you posted all those screen shots as an Answer. Did they actually answer anything? I converted them to a comment.
Your question was difficult to read since it was a single long line. If you want to get help, you may want to make an effort to make your posts readable.
Anyway, I ran this:
BEGIN TRAN
update Sample set lob='test string' where pk=3
SELECT resource_type, request_mode, resource_associated_entity_id AS id,
object_name(try_convert(int, resource_associated_entity_id)),
COUNT(*) AS [Count]
FROM sys.dm_tran_locks
WHERE request_session_id = @@spid
GROUP BY resource_type, request_mode, resource_associated_entity_id,
object_name(try_convert(int, resource_associated_entity_id))
And this is what I see:
I don't lock escalation is going on here, but I don't sure. There are 24 locks on object level. The reason that there is more than one is that with a table of this size, there will be parallelism and lock partitions. Lock partitions is a concept that is difficult to grasp, and to be honest, it may be above your own level. (Hint: I have difficulties to grasp the concept myself. And they call me an expert.) Also, because the table is that big, SQL Server may have taken these locks already from the start.
There is also one intent lock on page and one RID lock, that is a row lock, which is a little puzzling. But that must be for the row begin updated.
I would recommend that you redo the exercise for a table of a more moderate size. One million rows should do.