Выберите dbSet из списка tableName и fieldName для запроса - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть этот список TableInfo и этот универсальный класс, который имеет метод удаления

public class TableInfo {
    string TableName
    string ColumnName
    string FilterValue
}


public class BaseEntityManager<TTableEntity> where TTableEntity : class, IBaseEntity, new()
{
     public BaseEntityManager(DatabaseContext databaseContext, DbSet<TTableEntity> dbSet, string tableName)
      {//contructor initialize}

     public void DeleteMethod(int id){ }
}

 //TTableEntity rappresent the class used for specific dbset       
 public virtual DbSet<User> Users { get; set; }

, и мне нужно

  • получить элемент из tablename с columnName равно filtervalue (это можно сделать с помощью dbset.FromRawSql (), если вы знаете, как получить dbset)
  • создать экземпляр baseEntityManager, используя классdbSet table
  • запустить deleteMethod из менеджера

// пример

    foreach(var table in list)
    {
        //from dbContext.CorrectDbSet
        var items = "select * from {table.TableName} where {table.ColumnName} = table.FilterValue"

        foreach(var toDelete in items)
        {
            var baseMgr = new BaseEntityManager<'Class_of_dbSet_Type'>();
            basemgr.Delete(toDelete.id );
        }
    }

// пример управления пользователем

public virtual DbSet<User> Users //getset 
var userManager = new BaseEntityManager<User>(_dbContext, _dbContext.Users, "tbl_users")
...