【问题标题】:Linq to entity with a big databaseLinq 到具有大数据库的实体
【发布时间】:2009-03-20 09:03:17
【问题描述】:

我们即将开始一个项目,该项目涉及使用具有数十万条记录的 Sql Server 2005。过去我使用 NHibernate 取得了不错的效果。但现在我正在评估 Linq 到实体的数据访问。我有这些关于 L2E 的问题,

  1. 与 NHibernate 相比,L2E 的缓存有多好(基本上性能如何)?
  2. 使用单个 .edmx 文件有多容易(我们可能有多个开发人员同时处理这些文件)?如果我们决定拆分文件,这样做有多容易,有什么缺点?
  3. 模拟生成的类有多容易?
  4. 是否支持 MS Access?

【问题讨论】:

  • 也许你应该提出单一的、有针对性的问题?
  • 我知道 10 万是 100.000,但我认为其他人不知道。

标签: database nhibernate entity-framework ms-access linq-to-entities


【解决方案1】:
  1. Linq2Entities 不执行任何隐式缓存。当您运行查询时,它会将 Linq 转换为 SQL 查询,执行它并返回结果。就这么简单。

  2. 您不能将模型拆分为多个 EDMX 文件。好吧,你可以,但你会失去实体之间的关系。如果您的数据库包含多个不相互依赖的实体组,您可以这样做。

  3. 不太好。我们有一个模拟ObjectContext 的系统来拦截对其的调用(我们使用一个接口进行实体访问,它在运行时映射到真实的ObjectContext,在单元测试时映射到模拟的ObjectContext

  4. 可以,但您必须自己创建实体(您不能从数据库中生成它们)。

【讨论】:

  • 关于模拟,在编写测试时,编码的训练残骸方式(objectContext.Entity.Something())是否伤害了你
  • 是的,它确实有缓存。在上下文中查询的所有实体结果都缓存在该上下文中。如果您保持上下文活跃,您将拥有缓存。诀窍是您必须使用 DataContext.GetObjectByKey() 来检索缓存的对象。
  • @Inferis y,但它后面的文本有点误导(毕竟不是那么简单);)@AZ 在请求之间重用 datacontext 不是一个好主意,嗯,特别是在网络应用程序。 +1 好答案:)
猜你喜欢
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多