Как получить IEnumerable результат моего дочернего класса в EF 4. Например, у меня есть ObjectSet для моего базового класса тоже EntitySet ... но для моего ребенка у меня нет возможности запросить их .. Некоторые пытаются ошибитьсяМне удается читать, обновлять, создавать, удалять .., но не запрашивать (или перечислять) мой дочерний класс ..
Я читаю так:
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 ... у меня нет возможности сделать это.
Я пытаюсь что-то подобное ... но он возвращает мне ноль или исключение приведения.
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 .. что логически правильно ..
НоЯ вижу в отладке, что есть экземпляр DynamicProxies моего члена .. и это свойства правильно с хорошим значением .. но идентификаторОн не знает, как достичь этого .. Я могу поверить, что команда EF они не думают об этом ... Я ищу везде в сети ... нет успеха .. Мне нужен эксперт :)!
Спасибомного для вашего времени!Я ценю!
Cordialy, Julien.