gpt4 book ai didi

c# - 为什么在 Edmx 做同样的工作时使用 EF 5.X DbContext Generator?

转载 作者:可可西里 更新时间:2023-11-01 03:09:49 24 4
gpt4 key购买 nike

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

在 VisualStudio 2012 中,当我选择

项目 > 添加新项目 > ADO.Net 实体数据模型

然后选择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 控件绑定(bind)到数据库表?但是我的查询正在运行,我能否不只绑定(bind)到 edmx 对象,毕竟我可以“看到”已经映射的表,例如 Product.cs。

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

问题第 1 部分:

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

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

问题第 2 部分:

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

谢谢

最佳答案

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

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

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

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

问题 2:这是一个不同的问题,您应该打开一个单独的问题来询问如何将 WPF 与 Entity Framework 绑定(bind)。在执行此操作之前,我建议您先在线搜索,因为有大量资源对此进行了解释。例如,这篇 MSDN 文章: http://msdn.microsoft.com/en-us/data/jj574514.aspx

关于c# - 为什么在 Edmx 做同样的工作时使用 EF 5.X DbContext Generator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17477753/

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