У меня есть хранимая процедура, которая возвращает тип таблицы.Однако модель EF с хранимой процедурой возвращает только текущий класс таблицы, но не ассоциирует классы.Поэтому, когда я пересекаю свои ссылочные (дочерние / родительские) таблицы, я получаю нулевые значения везде для этих значений таблицы.
Я знаю, что это ожидается, поскольку хранимая процедура возвращает только эту таблицу (select * from the table),но теперь я хотел бы создать предложение объединения ПОСЛЕ вызова процедуры store для получения доступа к остальным ссылочным таблицам в моей модели EF.
Вот мой код, слегка измененный, чтобы было легче понять, чтоМне нужно ...
var coll = db.SearchContacts(keyword,param1,param2)
//returns Contact types,works great
... что бы я хотел сделать .... (хотя я знаю, что синтаксис отключен)
var ExtColl = coll join db.Address on coll.Address
join db.Department on coll.Department <- something similar
... так чтоТеперь я могу получить доступ к информации об этом отделе (Department.desc) или адресе (address.civic) этого контакта.
Я затрудняюсь с тем, как реализовать этот стиль форматирования ПОСЛЕ того, как я ужеполучил его от хранимого процесса в БД.
Хорошо, вот обновление того, что я делаю ...
var ps = from d in db.SearchContacts(param1,param2)
select d.Id;
var p = from e in db.Contacts
.Include("Table1Ref")
.Include("Table2Ref")
.Include("Table3Ref")
Where(BuildOrExpression<DBMOdel.Contact,long>(e=>e.Id,ps.ToList()))
select e;
Теперь я получаю возврат.хочу, кроме одной вещи .... есть таблицы, которые повторноFerence далее ссылается на таблицы, которые я хотел бы добавить, и «Включить» не позволяет мне добавлять их в «Контакты» напрямую, поскольку эти таблицы не ссылаются на «Контакт», а на другую таблицу, которая ссылается на «Контакт» на один уровень / уровень далее ... поэтому контакты ссылаются на адрес и адресссылается на провинцию ... и мне нужно получить доступ к информации о провинции (например, к описанию), но мне нужно правильно завершить оператор объединения ....
Поэтому я подумываю использовать оператор объединения, но незнать синтаксис для назначения или присоединения такого рода ... Контакт -> Адрес по AdressId, Адрес -> Провинция по ProvinceId
Так что я думаю, что мой оператор linq будет выглядеть следующим образом ...
var p = from e in db.Contacts
.Include("Table1Ref")
.Include("Table2Ref")
.Include("Table3Ref")
Where(BuildOrExpression<DBMOdel.Contact,long>(e=>e.Id,ps.ToList()))
-> join o in db.Province on o.ProvinceId equals e.Address.ProvinceId
select e;
но не получаю желаемого эффекта ... может кто-нибудь помочь?Я думаю, что я мог бы также смешивать linq для sql или объект с linq для сущности ... это ошибка, которую я получаю за это
"Тип ключевого селектора для вызова метода Join не являетсясравнимо с базовым поставщиком магазина. "