2013-01-24 60 views
15

Tôi là người mới bắt đầu với khung pháp nhân.Không thể tìm thấy phương thức CreateQuery()

và tôi không thể tìm ra phương pháp sau đây CreateQuery()


enter image description here

do tại sao tôi không thể tìm thấy phương pháp này? !!

+1

Bạn không cần điều đó. Nếu bạn cần lấy các giá trị 'PersonCreditCards' chỉ cần' context.PersonCreditCards.Where (criteria) '. Nó được gọi là LinQ to Entities. Nghiên cứu về điều đó. –

+2

tôi cũng muốn học 'EntitySQLQuery'. iwant để sử dụng phương pháp này :) –

Trả lời

19

Vì ESQL được coi là trường hợp sử dụng nâng cao nên không có API đơn giản nào từ DbContext. Bạn có thể truy cập vào ObjectContext rằng ủng hộ DbContext của bạn để làm những gì bạn muốn:

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

liên quan: http://thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/

Như đã đề cập ở đó, bạn cũng có thể thêm một phương pháp (hoặc tài sản) ObjectContext đến lớp ngữ cảnh của bạn:

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

Trước hết, đây không phải là giải pháp gốc để truy vấn trong EF. Hãy tìm hiểu càng nhiều LINQ như bạn có thể và sau đó, nếu bạn biết bạn thực sự cần các phương pháp thay thế, rơi trở lại CreateQuery()

Tuy nhiên, bạn có thể nhận được kết quả bạn muốn với đúc để System.Data.Entity.Core.Objects.IObjectContextAdapter như thế này:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

Ngoài ra, bạn có thể chạy lệnh sql với:

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

Hope this helps

Các vấn đề liên quan