[英]DbSet vs. ObjectSet - string predicate
反正有从DbSet
创建ObjectSet
吗?
一些背景信息:我有一个模型(EF 4.2),该模型正在对象上下文中返回DbSet。 我需要对其进行改造,以支持旧数据模型(EF4)中的API。 较旧的数据模型正在返回对象集,并且API(由IIS托管的WCF 3.5服务)中的几种方法接受传递给较旧模型的查询字符串谓词。 我需要在新模型中复制此行为,但是DbSet.Where
方法不接受字符串谓词参数。 我可以通过从Object Context( ObjectContext.CreateObjectSet<T>(string)
)创建一个对象集来使其部分工作,但是这样做似乎无法使任何include语句正常工作。
有没有办法将字符串谓词传递到DbSet
,还是有办法从.Include
方法加载相关数据集的DbSet
中获取ObjectSet
?
预先感谢(以下一些代码段):
创建ObjectSet
类(因此,我使用上下文进行初始化,而不是使用ClinicalContext.Exams
等中返回的DbSet进行初始化,而是使用基础对象Context并使用与DbSet
包含的对象相同的对象来创建EntitySet
。
public class ExamServicesEntities
{
private ClinicalContext _Context;
public ExamServicesEntities(ClinicalContext context)
{
_Context = context;
}
private ObjectSet<Exam> _ExamEntities;
public ObjectSet<Exam> Exams
{
get
{
if (_ExamEntities == null)
{
_ExamEntities = _Context.ObjectContext.CreateObjectSet<Exam>("Exams");
}
return _ExamEntities;
}
}
private ObjectSet<Visit> _VisitEntities;
public ObjectSet<Visit> Visits
{
get
{
if (_VisitEntities == null)
{
_VisitEntities = _Context.ObjectContext.CreateObjectSet<Visit>("Visits");
}
return _VisitEntities;
}
}
}
这样做可以正确加载数据,但是当我尝试包括其他对象之一(检查包含一个拜访,访问包含一个患者)时,未构建引用。
通过复制和调整用于生成上下文对象的T4模板并基于ObjectSet生成第二个上下文对象来解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.