A1: I don't know what "longer lifetime" means
A2: Entity framework is thread safe
A3: Use transaction scope*
B1: Only when you use it
B2: Use transaction scope*
B3: Use transaction scope carefully*
Entity framework is thread safe. avoid using the same instance of the DBConext to avoid deadlocks. The DBContext should be instantiated for the lifetime of a single transaction IMHO.
There are several isolation levels you can use for a transaction. Some will ensure that a table read always has the latest data at the cost of many table locks when the data is updated, and some will sacrifice accuracy for accessibility.
You should read up on transaction isolation levels and pick one that is best for your purposes.
I prefer snapshot. I single transaction can work in isolation and allow other queries to read from the table at the same time. The data will be unchanged until the transaction is complete, but this suits my app.