ie füge ich in Entity Framework eine generische Entität zu dem entsprechenden DbSet hinzu, ohne eine switch-Anweisung, die alle möglichen DbSets aufliste

Ich habe zwei Arten von Entitäten: eine Mitarbeiter-Entität und eine Büro-Entität mit einer Eins-zu-Viele-Beziehung zwischen den beiden, sodass für ein Büro viele Mitarbeiter vorhanden sind. Für EF wird für jede Entität ein DbSet in der Kontextdatei erstellt:

public DbSet<Office> Offices { get; set; }
public DbSet<Employee> Employees { get; set; }

Ein EF-Tutorial, in dem ich meine CRUD-Methoden für eine bestimmte Entität ausführen ließ. Die folgende Methode erstellt beispielsweise ein Büro und fügt es dem Büro-DbSet hinzu (ignorieren Sie das MVC-Zeug - ich mache das nicht mehr):

public ActionResult Create([Bind(Include = "Address,BusinessName")] Office office)
    {
        try
        {

            if (ModelState.IsValid)
            {
                db.Offices.Add(office);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

        }
        catch (DataException /* dex */)
        {
            //Log the error (uncomment dex variable name and add a line here to write a log.
            ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
        }
        return View(office);
    }

rundsätzlich möchte ich hervorheben, dass ein Office-Objekt an die Methode übergeben wird und dass das Office zum Office-DbSet hinzugefügt wird, indem db.Offices explizit geschrieben wird:

db.Offices.Add(office);

Ich muss jedoch eine Methode schreiben, in der ein generisches Entitätsobjekt übergeben werden kann, und ich kann dies zu seinem korrekten DbSet hinzufügen. Die grobe Idee für die Methode, die ich habe, ist ungefähr so (ich habe alle MVC-Sachen ignoriert):

public void Create(object entityToCreate)
{
    db.CorrespondingEntityType.Add(entityToCreate);
    db.SaveChanges();
}

Angenommen, ich habe ein Employee-Objekt. Ich kann diesen Employee an die Create-Methode übergeben, und es wird angezeigt, dass es sich um einen Employee handelt, sodass er dem Employees-DbSet hinzugefügt wird. Ich weiß jedoch nicht, ob EF dies unterstützt. Eine Alternative wäre eine switch-Anweisung. Auf diese Weise könnte ich abhängig vom Typ der Entität, der übergeben wird, direkt aufrufen, zu welcher DbSet die Entität hinzugefügt werden soll. Aber ich möchte das vermeiden, weil ich mit viel mehr Unternehmen als nur diesen beiden zusammenarbeiten werde. Auch für die anderen CRUD-Methoden muss ich ähnliche Dinge tun.

Ich sahdiese Dokumentation von msdn über die ObjectSet.AddObject-Methode, und es scheint nützlich zu sein, aber ich bin mir nicht sicher, wie es funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage