Первый using
располагает ресурсами объекта, а должен освободить ресурсы, исцеленные объектом.
Где во втором методе вы полагаетесь на сборщик мусора, чтобы сделать это для вас, однако сборщик мусора сделает это в какой-то недетерминированной точке, пока ваше приложение выполняется.
Здесь стоит упомянуть, что оператор using преобразуется во что-то вроде:
{
Entities myentities = new MyEntities();
try
{
myentities.AddTotblUsers(user);
myentities.SaveChanges();
}
finally
{
if (myentities != null)
((IDisposable)myEntities).Dispose();
}
}
Таким образом, он оборачивает весь объект в блоке try / finally, а когда он заканчивается, он всегда вызывает dispose для освобождения ресурсаесли исключение выдается в процессе внутри использования, мы уверены, что наш ресурс, вероятно, расположен.