Как получить IEnumerable результат моего дочернего класса в EF 4. Как и у меня есть ObjectSet для моего базового класса EntitySet тоже .. но для моего ребенка у меня нет способа запросить их .. Уит некоторые пытаются ошибку мне удается читать, обновление, создание, удаление .. но не запрашивать (или список) мой класс ребенок ..EF 4 унаследованный класс, как запросить мой дочерний класс
Читаю, как это:
public Member GetMember(Guid id) { try { using (EntitiesContainer db = new EntitiesContainer()) { return db.Resources.SingleOrDefault(x => x.Id == id) as Member; } } catch (Exception ex) { Log entry = new Log(); entry.ClassName = GetType().Name; entry.Message = ex.Message; entry.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; entry.StackTrace = ex.StackTrace; _logger.Log(entry, SeverityEnum.Critical); } return new Member(); }
Я создаю вот так:
public Member CreateMember(Member member, string userName) { try { using (EntitiesContainer db = new EntitiesContainer()) { member.Id = (Guid)_userService.GetUser(userName).ProviderUserKey; db.Resources.AddObject(member); db.SaveChanges(); } } catch (Exception ex) { Log entry = new Log(); entry.ClassName = GetType().Name; entry.Message = ex.Message; entry.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; entry.StackTrace = ex.StackTrace; _logger.Log(entry, SeverityEnum.Critical); } return member; }
Я обновляю так:
public Member UpdateMember(Member member) { try { using (EntitiesContainer db = new EntitiesContainer()) { db.Resources.Attach(GetMember(member.Id)); db.Resources.ApplyCurrentValues(member); db.SaveChanges(); } } catch (Exception ex) { Log entry = new Log(); entry.ClassName = GetType().Name; entry.Message = ex.Message; entry.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; entry.StackTrace = ex.StackTrace; _logger.Log(entry, SeverityEnum.Critical); } return member; }
и так далее ...
Но для списка или запросить мой Члены коллекции или ObjectSet ... У меня есть нет способа сделать это.
Я пробую что-то вроде этого .. но он возвращает мне null или исключение кастинга.
public IEnumerable<Member> GetAll() { try { using (EntitiesContainer db = new EntitiesContainer()) { var test = db.Resources.ToList() as IList<Member>; // OR var test = db.Resources as IEnumerable<Member>; // OR var test = db.Resources.Cast<Member>(); // OR var test = db.Resources.AsEnumerable<Member>(); return test; } } catch (System.Exception ex) { Log entry = new Log(); entry.ClassName = GetType().Name; entry.Message = ex.Message; entry.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; entry.StackTrace = ex.StackTrace; _logger.Log(entry, SeverityEnum.Critical); } return null; }
Пытаюсь создать ObjectSet для моего члена тоже, но они бросают меня, что я не имею никакого EntitySet для этого ObjectSet .. что его logicly право ..
Но я вижу в отлаживая, что есть экземпляр DynamicProxies моего члена .. эти свойства правы с хорошим значением .. но я не знаю, как его достичь .. Я могу поверить, что команда EF они не думают для этого ... I искать везде в сети .. нет sucess .. Мне нужен эксперт :)!
Большое спасибо за ваше время! Я ценю!
Cordialy, Julien.