Добавление данных в динамические таблицы в Entity Framework - PullRequest
0 голосов
/ 31 октября 2018

Я хочу обновить базу данных на основе входного файла Excel. Имена листов файла соответствуют именам таблиц в БД. Каждая таблица БД содержит разные столбцы, но в соответствующем порядке со столбцами 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              
}

1 Ответ

0 голосов
/ 31 октября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...