gpt4 book ai didi

wcf - 如何在分布式缓存中缓存 DbCompiledModel(或仅缓存其元数据)

转载 作者:行者123 更新时间:2023-12-01 04:34:58 25 4
gpt4 key购买 nike

我在一个 Entity Framework Code First 项目上工作,该项目具有大型 dbContext(800 多个实体)。

我遇到的问题是,第一次构建和编译元数据最多需要 30 秒,我无法承受让所有场服务器以这种方式延迟第一个请求 (WCF),即使在AppFabric 预热模块。一个选项是将编译后的模型缓存在分布式缓存上,这样场中的其他服务器在实例化 DbContext 时可以利用已经存在的模型。

我发现的一些事情:

  • 无法序列化 DbCompiledModel 实例;
  • DbCompiledModel 使用“ICachedMetadataWorkspace”的实现来缓存其元数据,称为“CodeFirstCachedMetadataWorkspace”;
  • “CodeFirstCachedMetadataWorkspace”(甚至“ICachedMetadataWorkspace”)确实可以用来提供一个可序列化的工作空间(在“DbDatabaseMapping.ToMetadataWorkspace”方法的帮助下),该工作空间将作为 xml 存储在分布式缓存中;

不幸的是,所有提到的类型都被 EF Code First 定义为内部类型(当然 DbCompiledModel 除外),直到现在我找不到合适的方法将其缓存到进程之外。

我尝试过的另一件事是拥有一个自定义 ObjectContext(在 DbContext 构造函数中使用它)以编程方式生成/加载 csdl、ssdl 和 msl 映射(来自 db 模式),但实际 View (poco 类) 仍然未映射到整个数据库上下文。

非常感谢任何帮助。

谢谢。

最佳答案

试试 EF 团队的 Arthur Vickers 发表的这篇博文:http://blog.oneunicorn.com/2012/04/21/code-first-building-blocks/

它具体展示了如何缓存已编译的模型。

关于wcf - 如何在分布式缓存中缓存 DbCompiledModel(或仅缓存其元数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com