Добавление данных в динамические таблицы в entity framework

Я хочу обновить базу данных на основе входного файла Excel. Имена листов файлов соответствуют именам таблиц в базе данных. Каждая таблица db содержит разные столбцы, но они расположены в соответствующем порядке столбцов Excel. Есть ли способ динамически выбрать таблицу, в которую нужно добавить новую сущность?

Код, который у меня есть до сих пор для динамического создания объекта (непроверенный, надеюсь):

int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;                           
for (int r = 7; r < rowCount; r++)
{
    var obj = Activator.CreateInstance(Type.GetType("DataGrabber." + xlWorksheet.Name.Remove(xlWorksheet.Name.Length - 1)));
    Type type = obj.GetType();
    IList<PropertyInfo> properties = new List<PropertyInfo>(type.GetProperties());
    int c = 1;

    foreach (PropertyInfo property in properties)
    {
        try
        {
            property.SetValue(obj, (int)xlRange.Cells[r, c].Value2());
        } catch
        {
            property.SetValue(obj, (decimal)xlRange.Cells[r, c].Value2());
        }
        c++;
    }
    context.[dynamic table name].AddOrUpdate(obj); ///// This is my DbContext, how to select the right table based on the type of ob              
}
0
0
195
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать метод Set () для добавления к динамическому типу таблицы.

var query = context.Set(type);
query.Add(obj);
context.SaveChanges();

Единственным недостатком является то, что метод AddOrUpdate () недоступен, поэтому перед запуском программы необходимо очистить таблицу. Приложение тоже чертовски медленное, но это уже тема для отдельного поста.

Другие вопросы по теме