Предполагая, что CMSEntities является вашим dbContext, вы используете его правильно, так как он реализует интерфейс IDisposable.
Единственное, что я хотел бы предложить, - это возвращать IQueryable вместо List, так как тогда вы получаете гибкость конвейерной обработки запросов Linq и , а затем , фактически обращающихся к базе данных. ( Ленивая загрузка ).
Если вам нужны все элементы, вы можете вызвать .ToList (), так что эта опция все еще доступна для вас.
EDIT
Например, скажем, у меня в базе данных есть таблица User, я создаю класс-оболочку для доступа к данным.
namespace Data.Repositories
{
public class UserRepository : IDisposable
{
ColegioDBV2Entities db = new ColegioDBV2Entities();
public IQueryable<User> FindAllUsers()
{
return db.Users;
}
public void Dispose()
{
db.Dispose();
}
}
}
И когда я хочу получить доступ к данным, я делаю это через класс репозитория:
using (UserRepository repo = new UserRepository())
{
var result = repo.FindAllUsers().Where(u => u.Username == txtUsername.Text && u.Password == txtPassword.Text);
}
Как только вы покидаете этот блок, ваш контекст автоматически закрывается и освобождается.