2010-12-30 10 views
0

Ich habe über das ganze Netz geschaut und finde keine vernünftige Lösung. Ich bin ein Anfänger bezüglich Entity Framework. Mit was ich arbeiten konnte, mag ich sehr. In früheren Projekten, habe ich ein Wörterbuch von Objekten ziehen konnte, dass ich später wie folgt verwenden können:Wie reflektiere ich eine Liste von EntityObjects?

Dictionary<string, MyBaseType> myTypes = new Dictionary<string, MyBaseType>(); 
var types = Assembly.GetExecutingAssembly().GetTypes() 
              .Where(t => t.BaseType != null && t.BaseType.Name.Equals("MyBaseType")).ToArray(); 
object ct; 
foreach (Type c in types) 
{ 
    ct = Activator.CreateInstance(c); 
    myTypes.Add(ct.GetType().Name, ct as MyBaseType); 
} 

var myob = myTypes["SomeName"]; 
myob.DoFoo(); // this is a method of my basetype class or my interface 

Ich brauche etwas ähnliches für eine MVC w/EF4 Projekt zu tun. Ich habe versucht, EntityObject als Basistyp zu verwenden, aber aus irgendeinem Grund wird die ausführende Assembly sie nicht widerspiegeln.

Irgendwelche Ideen?

Antwort

0

Sie müssen überprüfen:

  1. Was die Basisklasse für Ihre EF Objekte - Mine leiten sich direkt aus System.Object zum Beispiel.
  2. Sie suchen sie in der richtigen Assembly - sind sie in der Assembly deklariert, die den Code aus Ihrer Probe ausführt?
+0

Ich benutze nichts besonderes. Nur ein EDMX in meinem Hauptprojekt. Ich kann sehen, dass jede Entität der Basistyp von EntityObject ist. Ich dachte, ich könnte einfach von dort nachdenken und weitermachen, aber wie gesagt, die ExecutingAssembly erkennt diese Typen nicht. Wenn die in einem EDMX-Hauptprojekt generierten Typen nicht in der ausführenden Assembly enthalten sind, wo sind sie? – HapiDjus

+0

Die Frage ist "Was ist Ihre ausführende Assembly"? Sehen Sie sich 2 an. Wo wird der Beispielcode angegeben? Ist es in der gleichen Baugruppe wie Ihr EDMX? Welche Sichtbarkeit haben Ihre EF-Objekte? Sind sie öffentlich? –

Verwandte Themen