2017-07-17 3 views
0

Ich versuche, einige dynamische Code mit Entity Framework zu tun. Ich habe ein Modell (Model1) mit einer Tabelle (Test1), es ist einfach. Ich versuche, das Modell Test1 programmatisch mit dem Namen der Tabelle aufzurufen, um es nach verschiedenen Aufgaben zu verwenden. Ich wurde in Google suchen und ich habe Finding entities by key in entity framework gefunden, aber es ist nicht funktioniert, oder ich habe keine Ahnung, ...Get Entitäten, die von Zeichenfolge in Entity Framework

Wenn ich diesen Code lief es auf den Versuch bricht zu setzen entityProperty

Model1Container m = new Model1Container(); 
      PropertyInfo entityProperty = m.GetType().GetProperties().Where(t => t.Name == "Test1").Single(); 
      var baseQuery = (IQueryable<IIdentity>)entityProperty.GetValue(m, null); 

Entschuldigung für die Erklärung.

Irgendwelche Ideen?

Antwort

0

Sie ein Objekt mit einem String-Namen erstellen und seine Eigenschaften:

public class Test 
{ 
    //All my classes have these properties 
    //You can set up an interface and in the method you can set entity to an interface type 
    //You can even put these interfaces on edmx generated entities 
    //http://stackoverflow.com/questions/14059455/adding-validation-attributes-with-an-entity-framework-data-model 
    public string AString { get; set; } 
    public DateTime ADate { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult IndexStackOverflow101() 
    { 
     Assembly assembly = Assembly.Load("Testy20161006"); 
     Type t = assembly.GetType("Testy20161006.Controllers." + "Test"); 
     Object entity = (Object)Activator.CreateInstance(t); 
     PropertyInfo entityProperty = t.GetProperty("AString"); 
     PropertyInfo entityPropertyTwo = t.GetProperty("ADate"); 
     entityProperty.SetValue(entity, Convert.ChangeType("ap", entityProperty.PropertyType), null); 
     entityPropertyTwo.SetValue(entity, Convert.ChangeType(DateTime.Now, entityPropertyTwo.PropertyType), null); 
+0

Ich glaube, ich erklärte falsch .. Was ich will, ist programmatisch die Instanz von einer Einheit zu erhalten, dass ich in dem Modell. Auf diese Weise kann ich eine Zeichenfolge verwenden, um eine Entity zu erhalten, ohne m.Test1 .... zu schreiben, anstatt etwas Ähnliches wie m ["Test1"] (nicht so, aber ähnlich). Thx – kartGIS

+0

Sie können Teilklassen Ihrer Einheiten anlegen und sogar [erforderlich] oder andere Attribute auf den Feldern durch Metadaten: http://stackoverflow.com/questions/14059455/adding-validation-attributes-with-an-entity-framework- Datenmodell Sobald Sie das getan haben, können Sie jede Entität von IEntity ableiten und IEntity definieren. Sie können dann Assembly assembly = Assembly.Load ("Testy20161006") ausführen; Geben Sie t = assembly.GetType ("Testy20161006.Controllers." + "Test") ein; IEntity entity = (Objekt) Activator.CreateInstance (t); Kredit John Skeet – kblau

+0

Thx @ kblau! Ich habe es so gemacht – kartGIS

Verwandte Themen