Member 14007086 Ответов: 1

Получение ошибки при использовании ADO.NET модель сущности. (Тип сущности vw_facilitydepartmentrights не является частью модели для текущего контекста.)


У меня есть 1 ado.net режим сущности, имеющий в этом 2 представления.
Когда я применил условие where в обоих представлениях, оно дает мне ошибку, приведенную ниже.

Тип сущности vw_FacilityDepartmentRights не является частью модели для текущего контекста.

Что я уже пробовал:

бело это мой код уровня страницы
<pre> 
var query = (from em in new Entities().EquipmentEntities
                              join ej in new Entities().vw_FacilityDepartmentRights
                              on em.DeptCharg2Key equals ej.DepartmentKey
                              where ej.EmployeeKey == Convert.ToInt32(Session["Login.EmployeeKey"])
                              where em.Cloaked == false
                              where em.Inactive == false
                              select em
                              );


Below is my context code
<pre>  protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet<EquipmentEntity> EquipmentEntities { get; set; }
        public virtual DbSet<vw_FacilityDepartmentRights> vw_FacilityDepartmentRights { get; set; }



ниже приведена ссылка на конструктор контекста модели
2018-10-27_1422[^]

1 Ответов

Рейтинг:
1

Richard Deeming

Цитата:
"... не является частью модели для текущего контекста"
from em in new Entities().EquipmentEntities
join ej in new Entities().vw_FacilityDepartmentRights

Вы пытаетесь объединить сущности из двух разных экземпляров контекста. Вместо этого вам нужно создать один экземпляр контекста для вашего запроса.
var context = new Entitites();
var query = from em in context.EquipmentEntities
            join ej in context.vw_FacilityDepartmentRights
            on em.DeptCharg2Key equals ej.DepartmentKey
            where ej.EmployeeKey == Convert.ToInt32(Session["Login.EmployeeKey"])
            where em.Cloaked == false
            where em.Inactive == false
            select em;

Если это возможно, вы должны обернуть экземпляр контекста в using блок, чтобы убедиться, что он утилизирован должным образом. Но вам нужно будет полностью проявить результаты вашего запроса, прежде чем ваш код покинет область действия этого запроса using блок.