C# 在延迟加载关闭时使用未加载的虚拟属性
我使用EF Edmx,延迟加载。 我得到一个项目,其中有一个虚拟列表作为指向其他对象的导航属性 例: 稍后,当我尝试使用ServiceOffers时,它抛出上下文对象的异常。因为它试图从数据库中获取它们,而不仅仅是使用我刚才提到的服务 ObjectContext实例已被释放,无法再使用 用于需要连接的操作 我的目标是用我自己的列表填充对象,而不是从数据库中填充,有什么方法可以做到这一点吗 编辑: 供参考: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
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()代码>它已经返回了一个列表<代码>列表
然后您应该创建一个类来存储信息aServiceOffer
包含并“复制”信息。这是什么意思?在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);
}
}