2012-09-23 11 views
6

के लिए सभी पीओसीओ प्रकार प्राप्त करें क्या डीओसीएन्टेक्स्ट उदाहरण से पीओसीओ के प्रकार प्राप्त करने का कोई तरीका है?ईएफ कोडफर्स्ट: डीबीसीएन्टेक्स्ट

+0

एक ही समस्या है, क्या आप हल करते हैं? मुझे मदद चाहिए .. =/ –

उत्तर

6

आप MetadataWorkspace

public class MyContext : DbContext 
{ 

    public void Test() 
    {    
     var objectContext = ((IObjectContextAdapter)this).ObjectContext; 

     var mdw = objectContext.MetadataWorkspace; 

     var items = mdw.GetItems<EntityType>(DataSpace.CSpace); 
     foreach (var i in items) 
     { 
      Console.WriteLine("Class Name: {0}", i.Name); 
     } 
} 
+0

tnx, लेकिन मुझे पीओसीओ क्लास टाइप, गुण, और गुण विशेषताओं तक पहुंच की आवश्यकता है - EntityType इंस्टेंस प्रॉपर्टीज, प्रॉपर्टीजेटाडाटा आदि में अपना कार्यान्वयन देता है। – DrAlligieri

+0

@DrAlligieri आप इस प्रकार का पूरा नाम प्राप्त कर सकते हैं और फिर गुणों और विशेषताओं तक पहुंचने के लिए प्रतिबिंब का उपयोग करें। – Eranga

+0

पूर्णनाम "कोडफर्स्टडेटाबेसस्केमा। टाइप नाम" देता है, कोड फर्स्टडाबेसस्केमा - पीओसीओ कक्षा – DrAlligieri

4

@Lei यांग का उपयोग करने की जरूरत है: आप इस का उपयोग कर सकते एक सूची में सभी प्रकार प्राप्त करने के लिए।

var objectContext = ((IObjectContextAdapter) dbContext).ObjectContext; 
var mdw = objectContext.MetadataWorkspace; 
var items = mdw.GetItems<EntityType>(DataSpace.CSpace); 

var dbContextAssembly = dbContext.GetType().Assembly; 

var entityTypes = new List<Type>(); 
foreach (var i in items) { 
    entityTypes.Add(dbContextAssembly.GetType(i.FullName)); 
} 
3

दुर्भाग्य से, मैं स्वीकार किए जाते हैं जवाब को संपादित नहीं कर सकता है - आप बस के रूप में

var items = mdw.GetItems<EntityType>(DataSpace.OSpace); 

इस प्रकार एफई प्रॉक्सी अपने POCO वर्गों के बजाय प्राप्त करने के लिए इस्तेमाल किया dataspace बदलने की जरूरत है।

संबंधित मुद्दे