В Entity Framework, как мне добавить универсальный объект к соответствующему DbSet без оператора switch, который перечисляет все возможные DbSets?

У меня есть два типа объектов: объект сотрудника и объект офиса, с отношением один ко многим между двумя, так что на один офис приходится много сотрудников. Для EF DbSet создается в файле контекста для каждого объекта:

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

Учебник EF, который я сделал, заставил меня сделать мои методы CRUD для конкретной сущности. Например, приведенный ниже метод создает офис и добавляет его в офис DbSet (не обращайте внимания на материал MVC - я больше этим не занимаюсь):

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);
    }

В основном, две вещи, которые я хочу подчеркнуть, это то, что объект Office передается в метод, и что офис добавляется в Office DbSet путем явной записи db.Offices:

db.Offices.Add(office);

Тем не менее, мне нужно написать метод, в котором может быть передан объект общего объекта, и я могу добавить это к его правильному DbSet. Грубая идея метода, который у меня есть, выглядит примерно так (я проигнорировал все вещи MVC):

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

Допустим, у меня есть объект Employee. Я могу передать этого Employee в метод Create, и он увидит, что это Employee, и он добавил бы его в DbSet Employees. Я не знаю, поддерживает ли EF это все же. Альтернативой может быть создание оператора switch, и таким образом, в зависимости от типа передаваемой сущности, я мог бы напрямую вызвать, к какому DbSet добавить сущность. Но я хочу избежать этого, потому что я буду работать с гораздо большим количеством организаций, чем только с этими двумя. Также мне придется делать подобные вещи для других методов CRUD.

Я виделэта документация от msdn о методе ObjectSet.AddObjectКажется, это должно быть полезно, но я не уверен, как это работает.

Ответы на вопрос(2)

Ваш ответ на вопрос