处置的DbContext? [英] DbContext disposing?
本文介绍了处置的DbContext?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
的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; }
}
脚手架正在生成以下的操作方法
The scaffolding is generating following action methods
//
// 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()
法等方法加工后的工作。
There are break points for each method. Dispose()
method is working after working of other methods.
如何的Dispose()
方法被解雇每个方法的工作?
How Dispose()
method is fired for every method working?
推荐答案
有几件事情需要注意:
- 您的控制器的寿命只有只要每个请求。
- 每个请求将执行一个操作方法。
- 调用Dispose当控制器完成请求。
所以,这是每一个请求时会发生什么:
So, this is what happens during each request:
- 控制器初始化
- 的DbContext初始化
- 操作方法执行
- 控制器的Dispose方法执行
这篇关于处置的DbContext?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文