c# Использование таблицы строк и имен полей или обобщений для выполнения запроса LINQ и получения имен полей в таблице - PullRequest
0 голосов
/ 11 июля 2020

У меня есть общий c метод, который принимает таблицу как c общие параметры. У меня есть две таблицы, которые я хочу использовать в этом методе. Это таблицы MbsaDailyLog и MbsaDailylogWo. И это T1 и T2.

Both have identical properties. These two have detail tables 
MbsaDailyLogDetail and MbsaDailyLogDetailWo.

Мне нужно вызвать общий c метод и использовать LINQ, чтобы сначала вернуть список IQueryable для MbsaDailyLog, а затем снова вызвать тот же метод для MbsaDailyLogWo. Вот почему используется общий метод. Мне сложно просто использовать их вот так. (даже с getType).

T1 a d T2 are comming in as new types (MbsaDailyLog = new 
MbsaDailyLog()).


 var glog = db.T1.Include(c => c.T2)
                   .Include(c => c.MbsaExercis)
                   .Where(c => c.lgWorkoutNo == workoutNo);

С LINQ мне нужно получить доступ к имени поля с именем lgMemberNo, которое находится в MbsaDailyLog, чтобы я мог включить данные в третью таблицу с именем MbsaDailyLogDetail, когда lgMemberNo == ldMemberNo. ldMemberNo находится в MbsaDailyLogDetail. Я думал, что могу сделать что-то вроде этого:

  using (MbsaDataEntities db = new MbsaDataEntities())
                {
                    var memberNo = "lgMemberNo";
                    var table1 = "MbsaDailyLogs";
                    var table2 = "MbsaDailyLogDetails";
                    var woNo = "workoutNo";

                    var glog = db.table1.Include(c => c.table2)
                        .Include(c => c.MbsaExercis)
                        .Where(c => c.woNo == workoutNo);
                }

поиск по форуму, я видел варианты этого, но не могу заставить его работать, как указано выше. главное - это таблицы, я получаю сообщение:

'MbsaDataEntities' не содержит определения для 'table1' и нет доступного расширения 'table1', принимающего первый аргумент типа 'MbsaDataEntities'

'MbsaDataEntities' не может быть найден (вам не хватает директивы using или ссылки на сборку?)

Я понимаю, что table1 не является частью структуры сущностей, поэтому меня действительно интересуют передовые методы, ЕСЛИ ВЫ МОЖЕТЕ используйте строку table1.

ИЛИ это ЕДИНСТВЕННЫЙ способ, которым я могу сделать это:

  foreach(string table in tableNames)
    { 
     var query =$"select * from  {table} where <some_condition>"; 
     var list = db.ExecuteStoreQuery<Obj>(query);
   }
In EF You can execute regular query

Я работаю над этим некоторое время, и мне нужен совет. Спасибо за любой совет или помощь.

...