2013-07-10 47 views
0

在mvc中,當您使用sql的Dbset/Dbcontext時,在什麼時候表被查詢? Linq語句正在查詢的列表中加載了哪個表?Dbset/Dbcontext列表是在linq之前還是在linq之後加載的

可以說我有喜歡

public class MRN : DbContext 
{ 
    public MRN() 
     : base("DefaultConnection") 
    { 
    } 
    public DbSet<message> MRNS { get; set; } 
} 
[Table("MRN")] 
public class message 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    public string From { get; set; } 
} 

我的控制器模型就像

public class MRNController : Controller 
    { 
    private MRN mrn = new MRN(); // Is the linq list loaded here? 
    public ActionResult Someaction(){........ 
    ......} 

的行動

public ActionResult somelinq(int id) 
{ 
var k = mrn.MRNS.Find(id); //Is the private variable **mrn** already loaded here or does it loads during the linq statement or does linq queries actual table itself? 
} 

有人可以在裝載闡述與問候到SQL表即在什麼步驟執行實際的SQL查詢?

回答

3

只要您實現IQueryable即可執行您的查詢。例如,當撥打.First/Single(OrDefault).ToList()foreach就可以了。

+0

所以當你聲明私有變量是空的? –

+0

那麼這是一個完全不同的問題,但是如果你的意思是''DbContext'只要初始化它就可以訪問數據庫:否。在你顯示的代碼中,只有在'.Find()'數據庫纔會被打中。 – CodeCaster

+0

非常感謝,讓事情變得更加清晰。 –

相關問題