繁体   English   中英

DbSet与ObjectSet-字符串谓词

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM