2013-09-23 59 views
6

Tôi đang cố gắng viết một số phần mở rộng trên đầu trang của EF và tôi cần để có thể kiểm tra một mã ObjectContext đầu tiên và lấy các loại thực thể trong đó. Tôi cảm thấy như thế này nên có sẵn ở đâu đó trong không gian làm việc siêu dữ liệu, nhưng tôi không chắc chắn nơi để tìm. Tôi đang sử dụng EF 5.Làm cách nào để có được danh sách các loại thực thể từ một ObjectContext khi chạy bằng mã EF trước?

Lưu ý rằng chúng tôi không sử dụng bất kỳ loại tạo mã nào để tạo ngữ cảnh của chúng tôi, cũng như chúng tôi không đặt trình theo dõi DbSet loại cụ thể trên lớp cơ sở DbContext. Vì vậy, tôi không thể chỉ đơn giản là phản ánh qua DbContext/ObjectContext để xem các thuộc tính đó.

Trả lời

6

Tôi nghĩ điều này sẽ hoạt động:

var objectItemCollection = 
    (ObjectItemCollection)((IObjectContextAdapter)ctx) 
    .ObjectContext.MetadataWorkspace.GetItemCollection(DataSpace.OSpace); 

foreach(var entityType in objectItemCollection.GetItems<EntityType>()) 
{ 
    Console.WriteLine(objectItemCollection.GetClrType(entityType).FullName); 
}