@beduin01

Как передать в метод нужный мне запрос?

Ситуация простая. Есть метод GetData. Он получает все данные из БД и возвращает их.

public List<UserData> GetData(int FL)
    {
    	string sql = string.Format(@"SELECT id, guid, username, userblob, ""FL"" FROM ""USERS"" WHERE ""FL""={0};", FL);
    	...
                UserData ud = new UserData();
                ud.Id = dr[0].ToString();
                ud.Guid = (dr[1].ToString());
                ud.Name = (dr[2].ToString());
                ud.UserBlob = (byte[])dr[3];
                ud.FL = dr[4].ToString();
                uds.Add(ud);
    	...		
    	return uds;
    }


Однако у меня возникла потребность вызывать его передавая ему другую SQL команду `SELECT WHERE IN`.
Передавать ее в виде строки не могу т.к. у меня БД определены как абстракция:

TargetDbContext = DbContextFactory.GetDbContext(_config.FirstDataBase);
TransitDbContext = DbContextFactory.GetDbContext(_config.TransitDataBase);


Просто для каждой из используемых БД реализован свой метод: GetData и хотелось бы сам запрос определять в самом методе, а не передавать его снаружи. Как такое можно сделать?
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 3
AnnTHony
@AnnTHony
Интроверт
public List<UserData> GetData(int FL, string query)
{	
        switch (query)
        {
                case "WHERE":
                        // Делаем запрос WHERE
                       break;
                case "SELECT":
                        // Делаем запрос SELECT
                       break;
        }
    	return uds;
}
Ответ написан
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Однако у меня возникла потребность...


Если эта потребность внешняя, внутри метода это вряд ли разруляемо. Нужно либо аргументы добавлять, либо фабрику об этом известить, чтобы она возвращала контекст с правильным GetData.
Ответ написан
Комментировать
dmitry_pavlov
@dmitry_pavlov
World-class .NET freelance contractor (remotely)
Звучит как задача передачи опциональных фильтров (опциональные параметры в метод C#).

Но можно и передать вообще внешнюю функцию как параметер, которую будет дергать GetData для неизвестных ей вычислений. Хотя по мне так ситуация скорей сигналит о неверно спроектированном коде...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы