如何在缓存层中保存EF
本文关键字:保存 EF 缓存 | 更新日期: 2023-09-27 17:57:33
我使用的是实体框架。
我将对象保存在MS_library缓存管理器中。
然而,我现在遇到了一个问题:当我从缓存中检索这个对象时
其ContextObj已被释放。
如何在不将每个实体映射到模型对象的情况下解决此问题?
public partial class MaMDBEntities : DbContext
{
public MaMDBEntities()
: base("name=MaMDBEntities")
{
ObjectContext.
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<App> Apps { get; set; }
public DbSet<AppsData> AppsDatas { get; set; }
public DbSet<Browser> Browsers { get; set; }
public DbSet<BrowserVersion> BrowserVersions { get; set; }
public DbSet<BrowserVerToCriteria> BrowserVerToCriterias { get; set; }
public DbSet<CommonConfig> CommonConfigs { get; set; }
public DbSet<Country> Countries { get; set; }
public DbSet<Criterion> Criteria { get; set; }
public DbSet<CTID> CTIDS { get; set; }
public DbSet<DatabaseLastUpdate> DatabaseLastUpdates { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<MamConfiguration> MamConfigurations { get; set; }
public DbSet<MamConfigurationCTID> MamConfigurationCTIDs { get; set; }
public DbSet<MamConfigurationStatus> MamConfigurationStatuses { get; set; }
public DbSet<Pair> Pairs { get; set; }
public DbSet<SettingsServicesConfig> SettingsServicesConfigs { get; set; }
public DbSet<sysdiagram> sysdiagrams { get; set; }
public DbSet<CtidPgPastExistence> CtidPgPastExistences { get; set; }
public virtual ObjectResult<usp_AppsData_GetAll_Result> usp_AppsData_GetAll()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_AppsData_GetAll_Result>("usp_AppsData_GetAll");
}
}
加载尝试使用include()访问的导航属性,或者关闭对象上下文属性中的ProxyObjectCreation。
Context.SomeCollection.Include("NavigationalProperty")
或
Context.Configuration.ProxyCreationEnabled = false;
如果您决定关闭代理创建,则必须重新测试所有使用延迟加载的查询,因为在您的解决方案中会引入静默错误。