LINQ запрос для 4 таблиц из 2х баз данных

121
26 января 2021, 19:30

Существует 2 базы данных: 1 представлена таблицами, где t_stand - основная таблица, а t_fio содержит Id сотрудников и их имена.

и соответственно 2 (в ней находятся справочные таблицы, где содержится Id и словесное представление): Например в таблице t_ans_code AnsCode = 1, а AnsStr = Операция выполнена успешно.

Задача состоит в том, что на одном представлении нужно использовать данные из всех моделей. Было решено создать новую модель, которая включала бы все необходимые поля:

// Фамилия сотрудника (t_standModel ; t_fio)
public string FIO { get; set; }
// ID сотрудника (t_standModel ; t_fio)
public Nullable<int> HaspKey { get; set; }
    
// Тип сообщения (t_standModel ; t_stand)
public int MsgID { get; set; }
// Тип сообщения (слова) (t_typeModel ; t_msg_type)
public string MsgStr { get; set; }
    
// Дата помещения запроса (t_standModel ; t_stand)
public System.DateTime ReqDT { get; set; }
    
// Строка запроса (штрих-код или эл.номер изделия) (t_standModel ; t_stand)
public string ReqStr { get; set; }
//Наименование изделия (t_typeModel ; t_type_all)
public string Name { get; set; }
//Эл.номер изделия (t_typeModel ; t_type_all)
public string Number { get; set; }
//Штрих-код изделия (t_typeModel ; t_type_all)
public string ShtrihCod { get; set; }
    
// Xml файл запроса (t_standModel ; t_stand)
public byte[] ReqData { get; set; }
    
//Дата помещения ответа (t_standModel ; t_stand)
public Nullable<System.DateTime> AnsDT { get; set; }
    
// Код ответа (t_standModel ; t_stand)
public Nullable<long> AnsCode { get; set; }
// Код ответа (слова) (t_typeModel ; t_ans_code)
public string AnsCodeStr { get; set; }
    
// Не используется (t_standModel ; t_stand)
public string AnsStr { get; set; }
    
// Xml файл ответа (t_standModel ; t_stand)
public byte[] AnsData { get; set; }

Теперь стоит задача создать запрос на заполнение этой модели. И с этим проблема. Во первых при формировании запроса вида:

 var list = from stand in db.t_stand
            join user in db.t_fio on stand.UserID equals user.HaspKey
            join code in dbv.t_ans_code on stand.AnsCode equals code.AnsCode
            join message in dbv.t_msg_type on stand.MsgID equals message.MsqID
select new mainModel { FIO = user.FIO, HaspKey = user.HaspKey, MsgID = stand.MsgID, MsgStr = message.MsgStr, ReqDT = stand.ReqDT, ReqStr = stand.ReqStr, ReqData = stand.ReqData, AnsDT = stand.AnsDT, AnsCode = stand.AnsCode, AnsCodeStr = code.AnsStr, AnsStr = stand.AnsStr,AnsData = stand.AnsData};

возникает ошибка:

he specified LINQ expression contains references to queries that are associated with different contexts

А во вторых, поле ReqStr в зависимости от значения поля MsgID содержит либо штрих-код (пример:12345678912345), либо электронный номер (пример:01Х12345678912345). Поэтому 1 поле из t_stand (ReqStr) нужно сравнивать с 2 полями из t_type_all ( Number и ShtrihCode).

Подскажите пожалуйста, как написать запрос для такой ситуации?

p.s. Первый раз работаю с linq и mvc, так что простите за возможную банальность вопроса.

READ ALSO
Исправить цикл добавления числа в listview

Исправить цикл добавления числа в listview

Помогите исправить - Добавления числа 20 в каждую строку колонки "Total"

119
Windows mysql установка

Windows mysql установка

Я не могу установить mySQL на windows 10А мне очень именно mysql

140
При добавлении данных в БД MySQL значения записывается как undefined

При добавлении данных в БД MySQL значения записывается как undefined

Прошу помощи с моим первым приложениемИспользую Node js Express

144
Yii2 маршрутизация UrlManager

Yii2 маршрутизация UrlManager

Есть такой сайт в котором 1 пользователь может выбрать в каком проекте хочет работатьНапример: Заходит на главную страницу, выбирает себе...

129