2013-01-24 78 views
15

我是實體框架的新手初學者。找不到CreateQuery()方法

,我無法找到下面的方法CreateQuery()


enter image description here

爲什麼我不能找到這個方法?!

+1

你不需要那個。如果您需要檢索'PersonCreditCards'值,只需執行'context.PersonCreditCards.Where(criteria)'。它被稱爲LinQ to Entities。對此的研究。 –

+2

我也想學習'EntitySQLQuery'。我想用這個方法:) –

回答

19

由於ESQL被認爲是一種高級用例,因此從DbContext沒有簡單的API。您可以訪問備份您的DbContextObjectContext做你想做什麼:

((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..") 

相關:http://thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/

至於建議在那裏,你還可以添加一個方法(或屬性)ObjectContext你的上下文類:

public class BloggingContext : DbContext 
{ 
    public DbSet<Blog> Blogs { get; set; } 
    public DbSet<Post> Posts { get; set; } 

    public ObjectContext ObjectContext() 
    { 
     return (this as IObjectContextAdapter).ObjectContext; 
    } 
} 
7

首先,這不是在EF中查詢的原生解決方案。請學習儘可能多LINQ,你可以,然後,如果你知道你真正需要的替代方法,回落到的createQuery()

但是,你可以得到你想要鑄造System.Data.Entity.Core.Objects.IObjectContextAdapter這樣的結果:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

此外,您還可以運行SQL命令:

context.Database.SqlQuery<>()context.Database.ExecuteSqlCommand()

希望這有助於