Открывает ли он множественные соединения с БД или только один?
Зависит от того, как вы его используете, и это зависит от вашего определения открытых множественных соединений. Это не простой и простой вопрос.
Один из немногих способов вы открывать несколько соединений одновременно (наиболее распространенные в новом коде), если вы используете некоторые команды асинхронных как:
using (var dbContext1 = new S_ERP_DBEntities())
using (var dbContext2 = new S_ERP_DBEntities())
{
var cars = await dbcontext1.Cars.ToListAsync();
var cars = await dbcontext2.Cars.ToListAsync();
}
В этом примере есть только хороший шанс что откроются два соединения, и тогда оба будут закрыты. В противном случае большинство кода запускается синхронно, и поэтому каждый запрос EF для выполнения sql будет открываться и закрываться до того, как будет выполнена следующая строка кода.
Это сложнее, потому что пул приложений имеет один или несколько connection pools. Если строки соединения одинаковы, то одно и то же соединение можно использовать в моих контекстах (даже в разных запросах или в разных контекстах).
Как насчет огромного приложения, такого как система ERP? следует ли использовать один экземпляр или новый экземпляр в каждом классе? –
Всё зависит от меня. Если ваш объект сильно инициализируется, то один экземпляр может оказаться лучше. Если ваше приложение размещено в Интернете, и вы используете сеансы или какую-то обработку сеанса пользователя, то менее рискованно создавать несколько экземпляров для каждого пользователя. Вам нужно будет прочитать некоторые статьи, чтобы найти то, что подходит вам лучше всего для вашего требования. –
Для экземпляров подключения к базе данных довольно много людей предпочитают использовать один и тот же объект контекста, а не воссоздавать его, поскольку он используется много раз, и его дорогостоящее воссоздание каждый раз. –