none
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection. RRS feed

  • Вопрос

  • В Entity я добавил импорт функцию процедуры, которая возвращает все данные с таблицы. На страницу кинул DataList, ObjectSource. В ObjectSource я выбрал мою функцию. Но приложение падает. Я так понимаю в ObjectSource нельзя использовать функции которые генерирует Enity, а писать свои?
    19 апреля 2010 г. 16:54

Ответы

  • Воссоздал ситуацию

    код:

     

     using
    
    
     (var
     db = new
     NorthwindEntities())
     {
     DataList1.DataSource = db.getAllEmpl();
     DataList1.DataBind();
     }

     

    проходит отлично.

    Ну а с ObjectDataSource в принципе понятно - не предназначен он для Entity.Fr, не знает что такое ObjectContext и хранить его не собирается.

    У меня тоже воссоздается. По поводу ObjectDataSourc. Я понял что ObjectResult<T> возвращает такой тип данных, который ObjectDataSourc не может обработать.
    Создал новый класс и там метод

    public IQueryable<News> GetNewsAll()
    {
      return from news in db.News select news;
    }
    ObjectDataSourc прекрасно работает

    • Помечено в качестве ответа I.Vorontsov 20 апреля 2010 г. 10:43
    19 апреля 2010 г. 21:42

Все ответы

  • Exception говорит что ObjectContext уже был уничтожен, попробуйте инициализировать его при каждом Page_Load

    Или просто киньте на страницу EntityDataSource и свяжите его с DataList

    19 апреля 2010 г. 17:38
  • Я знаю что он пишет. Я предполагаю что Context вообще не создается или сразу же уничтожается. Так как он падает даже при таком случае

     

    using (MyEntities db = new MyEntities())
     {
       DataList1.DataSource = db.GetNewsAll();
       DataList1.DataBind();
     }

     

    Но работает прекрасно, если сделать вот так

     

    using (MyEntities db = new MyEntities())
     {
       DataList1.DataSource = db.GetNewsAll().ToList();
       DataList1.DataBind();
     }

     

    19 апреля 2010 г. 18:15
  • Выложите код метода
    19 апреля 2010 г. 18:48
  •  public ObjectResult<News> GetNewsAll()
     {
       return base.ExecuteFunction<News>("GetNewsAll");
     }
    19 апреля 2010 г. 19:26
  • Воссоздал ситуацию

    код:

     

     using (var db = new NorthwindEntities())
     {
     DataList1.DataSource = db.getAllEmpl();
     DataList1.DataBind();
     }

     

    проходит отлично.

    Ну а с ObjectDataSource в принципе понятно - не предназначен он для Entity.Fr, не знает что такое ObjectContext и хранить его не собирается.

    Но можно расширить модель своим методом

     

    namespace NorthwindModel
    {
     public partial class NorthwindEntities : global::System.Data.Objects.ObjectContext
     {
     public IList<Employees> GetAllEmployes()
     {
     return base.ExecuteFunction<Employees>("getAllEmpl").ToList();
     }
     }
    }

     

    Который можно использовать в ObjectDataSource

     

    • Изменено Megano 19 апреля 2010 г. 21:17 .
    • Предложено в качестве ответа Megano 20 апреля 2010 г. 6:47
    19 апреля 2010 г. 20:45
  • Воссоздал ситуацию

    код:

     

     using
    
    
     (var
     db = new
     NorthwindEntities())
     {
     DataList1.DataSource = db.getAllEmpl();
     DataList1.DataBind();
     }

     

    проходит отлично.

    Ну а с ObjectDataSource в принципе понятно - не предназначен он для Entity.Fr, не знает что такое ObjectContext и хранить его не собирается.

    У меня тоже воссоздается. По поводу ObjectDataSourc. Я понял что ObjectResult<T> возвращает такой тип данных, который ObjectDataSourc не может обработать.
    Создал новый класс и там метод

    public IQueryable<News> GetNewsAll()
    {
      return from news in db.News select news;
    }
    ObjectDataSourc прекрасно работает

    • Помечено в качестве ответа I.Vorontsov 20 апреля 2010 г. 10:43
    19 апреля 2010 г. 21:42