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

栏目: C# · 发布时间: 5年前

内容简介:http://stackoverflow.com/questions/17477753/why-use-ef-5-x-dbcontext-generator-when-edmx-does-the-same-job

我发现这个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控件绑定到数据库表?但是我的查询正在工作,我不能只绑定到edmx对象,毕竟我可以“看到”已经映射的Product.cs等表.

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

问题Part1:

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

步骤2:添加一个新的DbContext,它将自动检测上述edmx文件,并提供一个可绑定控件(如datagrids等)的dbcontext.

问题Part2:

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

谢谢

当您添加新的“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

http://stackoverflow.com/questions/17477753/why-use-ef-5-x-dbcontext-generator-when-edmx-does-the-same-job


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解Java多线程设计模式

图解Java多线程设计模式

[日] 结城浩 / 侯振龙、杨文轩 / 人民邮电出版社 / 2017-8 / 89.00元

本书通过具体的Java 程序,以浅显易懂的语言逐一说明了多线程和并发处理中常用的12 种设计模式。内容涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的有效应用、线程的数量管理以及性能优化的注意事项等。此外,还介绍了一些多线程编程时容易出现的失误,以及多线程程序的阅读技巧等。在讲解过程中,不仅以图配文,理论结合实例,而且提供了运用模式解决具体问题的练习题和答案,帮助读者加深对多线......一起来看看 《图解Java多线程设计模式》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换