這是我的第一篇文章:)我是MVC .NET的新手。並且對於實體框架功能和性能有一些問題。問題直列...實體框架,DbSet <T>,Dispose()性能問題
class StudentContext : DbContext
{
public StudentContext() : base("myconnectionstring") {};
public DbSet<Student> Students {get; set; }
...
}
問:是否DbSet從數據庫中讀取學生表中的所有記錄,並將其存儲在收集學生(即在內存中)?或者它只是持有一個到這個表的連接,並且(記錄)提取是在SQL針對數據庫執行時完成的?
爲以下幾點:
private StudentContext db = new StudentContext();
Student astudent = db.Students.Find(id);
或
var astudent = from s in db.Students
where s.StudentID == id)
select s;
問:哪些是獲得更好的性能?我不確定Find方法是如何在集合中工作的。
問題:數據庫連接何時關閉?在Dispose()方法調用期間? 如果是這樣,我應該爲具有數據庫上下文實例的類調用Dispose()方法嗎?我讀過這裏使用使用塊。
我猜一個Controller類的get實例化,包括數據庫訪問的工作,調用它的關聯視圖,然後(控制器)超出範圍並從內存中卸載。或者garbase收藏家。但最好調用Dispose()來明確地進行清理。
糾正我,如果我錯了,但'DbSet'意味着你使用實體框架,而不是LINQ to SQL,不是嗎? –
MarcinJuraszek
是的,使用EF。對不起,這些條款是新的。我應該說EF和LINQ的聲明。 –
好的,我編輯了你的問題來匹配。 – MarcinJuraszek