none
Entity framework, select ToList(), выбрать одну таблицу RRS feed

  • Вопрос

  • Пытаюсь перейти с LinqToSql на EF, подскажите пожалуйста, простой метод: 

    public partial class pol_karty
        {
            public static List<pol_karty> GetKartsByHumanUID(Guid guid)
            {
                using (Polic.OfficialRegistersCare db = new OfficialRegistersCare())
                {
                    return (from b in db.pol_karty
                            where b.human_uid == guid
                            select b).ToList();
                }
            }
        }

    Ругается : "Экземпляр ObjectContext был удален и больше не может использоваться в операциях, требующих соединения."

    Я так понимаю он пытается вытащить весь объект по связям FK и т.д., но я же вродебы делаю ToList(), чем говорю, что мы должны вытащить только его. Т.е меняю интерфейс с IQueryble на IEnumerable, что не должно позволять делать доп. запросы, хотя я их и не делаю. 

    В контроллере вызываю только эту функцию: 

    [HttpPost]
            public JsonResult GetKartsByUID(string uid)
            {
                var karts = Json(Polic.pol_karty.GetKartsByHumanUID(Guid.Parse(uid)));
                return karts;
            }

    Почему я думаю, что это FK пытается вытащить, потому, что ексепшн падает тут:

     
    [XmlIgnoreAttribute()]
            [SoapIgnoreAttribute()]
            [DataMemberAttribute()]
            [EdmRelationshipNavigationPropertyAttribute("Models", "FK_pol_karty__finans", "finans")]
            public finans finans
            {
                get
                {
                    return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<finans>("Models.FK_pol_karty__finans", "finans").Value;
                }
                set
                {
                    ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<finans>("Models.FK_pol_karty__finans", "finans").Value = value;
                }
            }


    • Изменено Tical Yeap 4 марта 2014 г. 10:33
    4 марта 2014 г. 10:16

Ответы

  • Оказалось, когда я отдаю return Json во вьюшку, то Json пытается сериализовать весь объект вместе с FK. Решение простое, во время отдачи Json отдавать указывая необходимые поля, путем Select(u=>new {u.Field1, u.Field2...}
    5 марта 2014 г. 8:53