In Entity Framework, wie füge ich ein generic entity zu seiner entsprechenden DbSet ohne eine switch-Anweisung, listet alle möglichen DbSets?

Ich habe zwei Arten von Entitäten: eine Entität Mitarbeiter und ein Büro-Einheit, mit der ein eins-zu-viele-Beziehung zwischen den beiden so, dass es viele Mitarbeiter für ein Büro. Für die EF, eine DbSet erstellt, in der Kontext-Datei für jede Entität:

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

EF-tutorial, die ich gemacht hatte, haben mich meine CRUD-Methoden für eine bestimmte Entität. Zum Beispiel die folgende Methode erzeugt ein Büro und fügt es an das Büro DbSet (ignorieren Sie das MVC-Sachen Tue ich 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);
    }

Im Grunde zwei Dinge, die ich hervorheben möchte ist, dass ein Office-Objekt wird an die Methode, und dass die office Hinzugefügt Office DbSet, indem Sie ausdrücklich schriftlich db.Büros:

db.Offices.Add(office);

Jedoch muss ich schreiben, eine Methode, bei der ein generic entity-Objekt kann übergeben werden, und ich kann hinzufügen, diese in Ihre richtige DbSet. Die grobe Idee für die Methode, die ich habe, ist so etwas wie dieses (habe ich ignoriert alle das MVC-Zeug):

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

Also sagen wir mal ich habe ein Mitarbeiter-Objekt. Ich kann diese übergeben Mitarbeiter in der Methode Erstellen, und Sie können sehen, dass dies ist ein Mitarbeiter, und so würde es hinzufügen, um die Mitarbeiter DbSet. Ich weiß nicht, ob EF unterstützt dies aber nicht. Eine alternative wäre eine switch-Anweisung und das ist, je nach Art der Wesenheit zu übergeben, konnte ich Sie direkt anrufen, die DbSet hinzufügen der Entität zu. Aber ich möchte vermeiden, dass, weil ich die Arbeit mit viel mehr Personen als nur diese zwei. Auch ich werde zu tun haben, ähnliche Dinge für die anderen CRUD-Methoden.

Sah ich diese Dokumentation aus der msdn über die ObjectSet.AddObject-Methode, und es scheint, wie es sollte nützlich sein, aber ich bin mir nicht sicher, wie es funktioniert.

InformationsquelleAutor Drew | 2015-06-05
Schreibe einen Kommentar