EF CTP5哪个代码生成项可供选择?

时间:2011-03-05 15:16:44

标签: entity-framework-4 asp.net-mvc-3 poco entity-framework-ctp5 ef-code-first

随着EF 4.1的推出以及CTP5可用几个月,我决定试用新功能。如我所见,有多个生成项可用(DbContext和三个不同的ObjectContext's)。我也注意到它们不可互换 - 我首先在我的一个应用程序中使用POCO ObjectContext,今天切换到DbContext,我的整个存储库都崩溃了。它基于LoadProperty()方法,DeleteObject()AddObject()方法,DbSet类中的DbContext类都缺少这些方法。

我知道这里有一个很棒的博客系列http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction-and-model.aspx介绍了新的功能,但它从来没有真正说明何时选择什么。

我的要求是:

  • ASP.NET MVC应用程序,太懒了 加载大部分都不会在页面上工作 渲染它会说上下文有 已被处置(这就是为什么我 需要轻松支持明确 加载 - 在EF4中我做到了 Include(),使用POCO上下文我做了 它通过LoadProperty()现在 在DbContext我相信我会用 强类型Include())。
  • 我们可能不需要代码优先 功能(但你永远不知道)。

2 个答案:

答案 0 :(得分:2)

这两者之间的差异主要在API and feature setDbContext当然有Include用于查询和Load,但您可以在别处找到它。此外,在使用CTP5程序集时,对于IncludeObjectSetavailable on IQueryable interface作为扩展方法,您将使用强类型DbSet

显式加载(相当于LoadProperty)由LoadDbReferenceEntry<T>上的DbCollectionEntry<T>方法执行 - 检查Explicit loading related entities。它比LoadProperty更好用,因为您可以定义用于加载的过滤器。

答案 1 :(得分:0)

您首先假设您不能对MVC使用延迟加载。

如果您在更高级别管理上下文,您将能够毫无问题地执行此操作。