Понимание использования в Linq To SQL

Я работаю с LINQ To SQL соединением на своем ASP.NET сайте, но у меня есть странные проблемы. Я создал объект Singleton DataContext для всего использования на веб-сайте, но я действительно не понимаю, почему данные не всегда обновляются, а иногда добавление строки в таблицу не удается, потому что другой объект с тем же ключом уже существует (я проверил, и это не так). такой объект).

В чем проблема и есть ли другой способ использовать это соединение?

public class SQLConnection
{
    private LearningDBDataContext dbDataContext;

    public SQLConnection()
    {
        dbDataContext = new LearningDBDataContext();
    }

    public LearningDBDataContext GetDataContextInstance()
    {
        return dbDataContext;
    }

    public void reCreateDBConnection()
    {
        dbDataContext = new LearningDBDataContext();
    }
}

person user1940350    schedule 02.05.2014    source источник
comment
Не создавайте синглтон, контекст должен быть недолговечным. Вы также нигде не избавляетесь от контекста и, таким образом, вы пропускаете соединения.   -  person Matthew    schedule 03.05.2014
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел "Привет", "спасибо" слоганов и приветствий удалить из постов?.   -  person John Saunders    schedule 03.05.2014
comment
поэтому каждый раз, когда мне нужна информация из базы данных, нужно открывать новое соединение?   -  person user1940350    schedule 03.05.2014


Ответы (1)


Определенно не используйте синглтон. Если вы используете контейнер IoC, вы можете установить недолговечный контекст — один экземпляр контекста на запрос. Или на уровне доступа к данным оберните любые экземпляры контекста данных оператором using, чтобы убедиться, что он правильно удален, т.е.:

MyModel model;
using(var context = new LearningDBDataContext()){
     // fetch your data here
     model = ...
}
return model;

Ознакомьтесь с этой публикацией SO и этот сайт MSDN для получения дополнительной информации по этому вопросу.

person rwisch45    schedule 02.05.2014
comment
Теперь у меня другая проблема. Не удается получить доступ к удаленному объекту. Имя объекта: 'DataContext доступен после Dispose.'. ? - person user1940350; 03.05.2014
comment
я создал kinf od Model-View-Controller, контроллер возвращал список таблицы учителей. В представлении я перебираю список и пытаюсь получить доступ к учителю. Расписание. (расписание - это другая связанная таблица), тогда я получил это исключение. - person user1940350; 03.05.2014