2017-01-31 9 views
-1

Я видел другие вопросы, подобные этому, но никого достаточно близко, чтобы помочь мне понять это. Я получаю ошибку здесь, в моем репозитории:Объект ObjectContext был удален, метод async, ToListAsync(), SqlQuery

return await Context.Database.SqlQuery<MemberField>(sqlstring).ToListAsync(); 

Как исправить это? Он работал до этого без каких-либо изменений в коде, поэтому я знаю, что все, что мне нужно, это сохранить контекст. Я пробовал сделать это:

Context.Configuration.LazyLoadingEnabled = false; 

но это не помогло. Это находится в проекте ASP.NET.

Спасибо!

в конструкторе у меня есть:

public MyRepository(IDbContextProvider<MyDbContext>  dbContextProvider) : base(dbContextProvider) 

Тогда у меня есть класс AbpDbContext:

public class MyDbContext : AbpDbContext{ 
public MyDbContext() : base("Default"){} 

public MyDbContext(string nameOrConnectionString) : base(nameOrConnectionString){} 

}

Вы можете захватить решение шаблон так же, как проект я пытаюсь для работы отсюда: http://www.aspnetboilerplate.com/

Обновление: ABP обрабатывает cr есть и удалять подключения к базе данных, поэтому у меня нет кода, который бы показывал, что это делает.

+4

Как вы создаете/распоряжаетесь своим контекстом? Покажите это, пожалуйста. – DavidG

+0

в конструкторе у меня есть: общественного MyRepository (IDbContextProvider dbContextProvider): основание (dbContextProvider) Тогда у меня есть класс AbpDbContext: MyDbContext общественного класса: AbpDbContext { общественного MyDbContext(): основание ("По умолчанию") {} public MyDbContext (string nameOrConnectionString): base (nameOrConnectionString) {} } – paladyr

+1

Это последнее редактирование не очень помогает, и не то, о чем просил DavidG. Вы показываете свои конструкторы, но ничего не знаете о жизненном цикле для контекста. – Igor

ответ

0

Мне удалось получить эту работу, но обработать dbcontext в операторе using внутри репозитория. Это препятствует тому, чтобы структура Abp обрабатывала dbcontext и удаляла ее слишком рано. Так что в настоящее время он выглядит так:

public List<MyObjs> GetObjs(){ 
    using(var db = new MyDbContext()){ 
     var query = from x in db.mytable 
        select x; 
     return query.ToList(); 
    } 
}