2013-03-14 2 views
6

DbContextУтилита DbContext?

public class HaberPortalDB : DbContext 
{ 
    public DbSet<Haberler> Haberler { get; set; } 
    public DbSet<Kategoriler> Kategoriler { get; set; } 
    public DbSet<Yazarlar> Yazarlar { get; set; } 
} 

public class Haberler 
{ 
    public virtual int Id { get; set; } 
    public virtual string Baslik { get; set; } 
    public virtual string Aciklama { get; set; } 
    public virtual string Icerik { get; set; } 

    public virtual int YazarId { get; set; } 
    public virtual Yazarlar Yazar { get; set; } 

    public virtual int KategoriId { get; set; } 
    public virtual Kategoriler Kategori { get; set; } 
    public virtual ICollection<Resimler> Resimler { get; set; } 
} 

public class Kategoriler 
{ 
    public virtual int Id { get; set; } 
    public virtual string KategoriAdi { get; set; } 
    public virtual string Aciklama { get; set; } 

    public virtual ICollection<Haberler> Haberler { get; set; } 
} 

public class Yazarlar 
{ 
    public virtual int Id { get; set; } 
    public virtual string YazarAdi { get; set; } 
    public virtual string Ozgecmis { get; set; } 
    public virtual string Eposta { get; set; } 

    public virtual ICollection<Haberler> Haberler { get; set; } 
} 

public class Resimler 
{ 
    public virtual int Id { get; set; } 
    public virtual string Url { get; set; } 
    public virtual string Ad { get; set; } 

    public virtual Haberler Haber { get; set; } 
} 

подмости генерирует следующие методы действий

// 
    // GET: /Test/ 

    public ActionResult Index() 
    { 
     return View(db.Kategoriler.ToList()); 
    } 

    // 
    // GET: /Test/Details/5 

    public ActionResult Details(int id = 0) 
    { 
     Kategoriler kategoriler = db.Kategoriler.Find(id); 
     if (kategoriler == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(kategoriler); 
    } 

    // 
    // GET: /Test/Create 

    public ActionResult Create() 
    { 
     return View(); 
    } 

    // 
    // POST: /Test/Create 

    [HttpPost] 
    public ActionResult Create(Kategoriler kategoriler) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Kategoriler.Add(kategoriler); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(kategoriler); 
    } 

    // 
    // GET: /Test/Edit/5 

    public ActionResult Edit(int id = 0) 
    { 
     Kategoriler kategoriler = db.Kategoriler.Find(id); 
     if (kategoriler == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(kategoriler); 
    } 

    // 
    // POST: /Test/Edit/5 

    [HttpPost] 
    public ActionResult Edit(Kategoriler kategoriler) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(kategoriler).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(kategoriler); 
    } 

    // 
    // GET: /Test/Delete/5 

    public ActionResult Delete(int id = 0) 
    { 
     Kategoriler kategoriler = db.Kategoriler.Find(id); 
     if (kategoriler == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(kategoriler); 
    } 

    // 
    // POST: /Test/Delete/5 

    [HttpPost, ActionName("Delete")] 
    public ActionResult DeleteConfirmed(int id) 
    { 
     Kategoriler kategoriler = db.Kategoriler.Find(id); 
     db.Kategoriler.Remove(kategoriler); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     db.Dispose(); 
     base.Dispose(disposing); 
    } 

Есть точки останова для каждого метода. Dispose() метод работает после работы других методов.

Как Dispose() метод уволен для каждого метода работы?

+0

'Dispose () 'метод работает после работы других методов. Что ты хочешь этим сказать? – jackncoke

+1

Посмотрите на этот вопрос http://stackoverflow.com/questions/1380019/asp-mvc-when-is-icontroller-dispose-called – polybios

+0

@jackncoke, sory для моего английского. Я имею в виду, как вызывается метод dispose? –

ответ

7

Несколько вещей отметить:

  • Срок службы контроллера только до тех пор, как каждый запрос.
  • Каждый запрос будет выполнять один метод действий.
  • Dispose вызывается, когда контроллер завершает запрос.

Итак, это то, что происходит во время каждого запроса:

  1. контроллер инициализируется
  2. DbContext инициализируется
  3. метод действий выполняет
  4. метод
  5. Контроллер Dispose выполняет
+0

+ 1.I получил его, «диспетчер распоряжается вызывается после каждого запроса». Но как? Где метод обжига? Мы используем эту инструкцию для этого, но как контроллер вызывает метод dispose? –

+0

@ AliRızaAdıyahşi Структура MVC вызывает метод управления контроллером. – jrummell

+0

@ Сорок два Это необходимо, если вы хотите немедленно уничтожить. Другим вариантом будет использование рамки DI, которая управляет временем жизни для вас, например [Unity.Mvc3] (http://unitymvc3.codeplex.com/). – jrummell

Смежные вопросы