【问题标题】:Why use EF 5.X DbContext Generator when Edmx does the same job?当 Edmx 做同样的工作时,为什么要使用 EF 5.X DbContext Generator?
【发布时间】:2013-07-04 20:32:54
【问题描述】:

我发现这个 EF 5 dbContext 很难掌握。

在 VisualStudio 2012 中,当我选择时

Project > Add New item > ADO.Net Entity Data Model

并选择AdventureWorks数据库文件,它会生成一个edmx文件(要求我将数据库文件复制到本地之后)。

就是这样,我现在可以开始运行查询了,例如

AdventureWorks_DataEntities entities = new AdventureWorks_DataEntities
var query = from p in entities.Products
            where p.ListPrice >= 0
            select p;

让我困惑的是,为什么我要使用

Project > Add New Item > EF 5.X DBcontext Generator

这样我可以将我的 WPF 控件绑定到数据库表吗?但是我的查询正在运行,我可以不只是绑定到 edmx 对象,毕竟我可以“看到”已经映射的 Product.cs 等表。

如果这是正确的,那么是否可以说使用 EntityFramework 是一个两步过程

问题第 1 部分:

第 1 步:添加从数据库生成的新 edmx 文件

第二步:添加一个新的DbContext,它会自动检测上面的edmx文件,并提供一个可以绑定控件的dbcontext,比如datagrids等。

问题第 2 部分:

我已经可以在我的 edmx 模型中看到 Product.cs 已在步骤 1 中从 Product 表映射,为什么我不能将我的 WPF 控件直接绑定到那个,为什么需要上面的第2步?

谢谢

【问题讨论】:

  • 没有投票,没有意见,没有答案,至少这让我赢得了 TumbleWeeder 徽章......
  • 我正在寻找完全相同的答案...

标签: c# entity-framework


【解决方案1】:

当您添加新的“ADO .NET 实体数据模型”时,除了创建 EDMX 之外,它还会为您创建 DbContext,即“AdventureWorks_DataEntities”。

因此,您不需要添加“EF 5.X DBcontext Generator”,这已经存在于您的项目中。如果在 Visual Studio 中单击 .edmx 文件左侧的箭头将其展开,您将看到几个文件。其中两个将以“.tt”结尾。这些是 T4 模板,负责在您修改 EDMX 时自动生成模型实体和 DbContext。

希望这可以澄清概念,直接回答您的问题:

问题 1:您只需要第 1 步,“AdventureWorks_DataEntities”就是您的 DbContext。如果你打开“AdventureWorks_DataEntities.cs”文件,你会看到这个类继承自 DbContext。

问题 2:这是一个不同的问题,您应该打开一个单独的问题,询问如何将 WPF 与实体框架绑定。在你这样做之前,我建议你先在网上搜索,因为有很多资源可以解释这一点。例如,这篇 MSDN 文章: http://msdn.microsoft.com/en-us/data/jj574514.aspx

【讨论】:

  • 值得一提的是,如果您采用代码优先的方法,您将不会为您生成 DBContext,因此您需要自己制作一个。这就是它存在的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2014-07-02
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多