我正在使用EF Edmx,延迟加载。 我得到一个项目,其中有一个虚拟列表作为其他对象的导航属性。
前:
public partial class CalculationInstance{
public virtual ICollection<ServiceOffer> ServiceOffers { get; set; }
}
我有一个获取CalculationInstance的方法,其中我不包含ServiceOffers。
稍后在代码中我想要归因于该对象实例的ServiceOffers:
var cInst = GetCalculationInstance(id);
cInst.ServiceOffers = GetListOfServiceOffers();
稍后,当我尝试使用ServiceOffers时,它会抛出Context对象的异常处理。因为它试图从数据库中获取它们,而不是仅仅使用我刚刚归因的服务。
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);
}
}