1
如何在EF 4中获得我的子类的IEnumerable结果。Like,我的基类有一个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(); }
I Create like this:
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; }
等等......
但对于列表或查询我的会员集合或对象集...我有没有办法做到这一点。
我尝试类似的东西..但它返回空或铸造异常。
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; }
我尝试了我的会员创建一个对象集太多,但他们扔我,我没有任何的EntitySet这个对象集..其logicly权利..
但我在看调试我的成员DynamicProxies的一个实例..一个这个属性是正确的与良好的价值..但我不知道如何达到它..我可以相信,EF团队,他们没有想到的......我在网上随处搜索..没有成功..我需要一个专家:)!
非常感谢您的时间!我很感激!
Cordialy, Julien。