If you do not use pessimistic concurrency control the locks should only occur during commit. If you have some bigger commits that uses more than 5 seconds, can also happen because the server has some load, you might see lock timeouts.
There are two other situations where a row might be locked, one is transaction.flush(), this flushes all changes to the server and keep the server txn open (similar to IgnoreUncommitted = false setting at the query). The other situation is a GetObjectId() call on a new object with autoinc key generator setting. Here we also flush the insert statement which might result in blocking insert statements form other scopes.
the Telerik team