Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在延迟加载关闭时使用未加载的虚拟属性_C#_Entity Framework_Lazy Loading_Eager Loading_Navigation Properties - Fatal编程技术网

C# 在延迟加载关闭时使用未加载的虚拟属性

C# 在延迟加载关闭时使用未加载的虚拟属性,c#,entity-framework,lazy-loading,eager-loading,navigation-properties,C#,Entity Framework,Lazy Loading,Eager Loading,Navigation Properties,我使用EF Edmx,延迟加载。 我得到一个项目,其中有一个虚拟列表作为指向其他对象的导航属性 例: 稍后,当我尝试使用ServiceOffers时,它抛出上下文对象的异常。因为它试图从数据库中获取它们,而不仅仅是使用我刚才提到的服务 ObjectContext实例已被释放,无法再使用 用于需要连接的操作 我的目标是用我自己的列表填充对象,而不是从数据库中填充,有什么方法可以做到这一点吗 编辑: 供参考: public CalculationInstance GetCalculationInst

我使用EF Edmx,延迟加载。 我得到一个项目,其中有一个虚拟列表作为指向其他对象的导航属性

例:

稍后,当我尝试使用ServiceOffers时,它抛出上下文对象的异常。因为它试图从数据库中获取它们,而不仅仅是使用我刚才提到的服务

ObjectContext实例已被释放,无法再使用 用于需要连接的操作

我的目标是用我自己的列表填充对象,而不是从数据库中填充,有什么方法可以做到这一点吗

编辑: 供参考:

public CalculationInstance GetCalculationInstance(Guid id) {
        PortugalInternalCalculatorDb ctx = null;
        try {
            ctx = _ciContextFactory.Create();
            return ctx.CalculationInstances
                .Include(l => l.CompatibilityGroup)
                .Include(l => l.CalculationAnswers)
                .SingleOrDefault(l => l.Id == id);
        } finally {
            if (ctx != null)
                _ciContextFactory.Release(ctx);
        }
    }

public List<ServiceOffer> GetServiceOffers(Guid calcInstanceId, string partner = null) {
            PortugalInternalCalculatorDb ctx = null;
            try {
                ctx = _ciContextFactory.Create();
                return
                    ctx.ServiceOffers
                        .Include(_ => _.ServiceOfferFeatures)
                        .Include(_ => _.Provider)
                        .Where(_ => _.CalculationInstanceId == calcInstanceId
                        && (partner == null || _.Provider.CommunicatorPrefix.ToLower().Equals(partner)))
                        .ToList();
            } finally {
                if (ctx != null)
                    _ciContextFactory.Release(ctx);
            }
        }
public calculationstance getcalculationstance(Guid id){
PortugalInternalCalculatorDb ctx=null;
试一试{
ctx=_ciContextFactory.Create();
返回ctx.CalculationStances
.包括(l=>l.CompatibilityGroup)
.包括(l=>l.计算答案)
.SingleOrDefault(l=>l.Id==Id);
}最后{
如果(ctx!=null)
_ciContextFactory.Release(ctx);
}
}
公共列表GetServiceOffers(Guid CANCINSTANCEID,字符串partner=null){
PortugalInternalCalculatorDb ctx=null;
试一试{
ctx=_ciContextFactory.Create();
返回
ctx.ServiceOffers
.Include(=>.ServiceOfferFeatures)
.Include(=>u.Provider)
.Where(=>u.CalculationStanceId==CalculationStanceId
&&(partner==null | | | |提供程序.CommunicatorPrefix.ToLower().Equals(partner)))
.ToList();
}最后{
如果(ctx!=null)
_ciContextFactory.Release(ctx);
}
}

GetListOfServiceOffers()返回的是什么类型?它可以通过以下方法解决:
cInst.ServiceOffers=GetListOfServiceOffers().ToList()它已经返回了一个列表<代码>列表
然后您应该创建一个类来存储信息a
ServiceOffer
包含并“复制”信息。这是什么意思?在
CalculationStance
中有第二个列表:/请提供
GetCalculationInstance(id)
GetListOfServiceOffers()
var cInst = GetCalculationInstance(id);
cInst.ServiceOffers = GetListOfServiceOffers();
public CalculationInstance GetCalculationInstance(Guid id) {
        PortugalInternalCalculatorDb ctx = null;
        try {
            ctx = _ciContextFactory.Create();
            return ctx.CalculationInstances
                .Include(l => l.CompatibilityGroup)
                .Include(l => l.CalculationAnswers)
                .SingleOrDefault(l => l.Id == id);
        } finally {
            if (ctx != null)
                _ciContextFactory.Release(ctx);
        }
    }

public List<ServiceOffer> GetServiceOffers(Guid calcInstanceId, string partner = null) {
            PortugalInternalCalculatorDb ctx = null;
            try {
                ctx = _ciContextFactory.Create();
                return
                    ctx.ServiceOffers
                        .Include(_ => _.ServiceOfferFeatures)
                        .Include(_ => _.Provider)
                        .Where(_ => _.CalculationInstanceId == calcInstanceId
                        && (partner == null || _.Provider.CommunicatorPrefix.ToLower().Equals(partner)))
                        .ToList();
            } finally {
                if (ctx != null)
                    _ciContextFactory.Release(ctx);
            }
        }