我发现这个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文件
步骤2:添加一个新的DbContext,它将自动检测上述edmx文件,并提供一个可以绑定控件的dbcontext,例如datagrids等。
问题第2部分:
我已经在我的edmx模型中 Product.cs
已经从步骤1中的产品表进行了映射,为什么我不能直接绑定我的WPF控件为此,为什么上面的第2步是必要的?
谢谢
答案 0 :(得分:15)
当您添加新的&#34; ADO .NET实体数据模型&#34;时,除了创建EDMX之外,它还会为您创建DbContext,它是&#34; AdventureWorks_DataEntities&#34;。< / p>
因此,您不需要添加&#34; EF 5.X DBcontext Generator&#34;,这已经存在于您的项目中。如果在Visual Studio中单击.edmx文件左侧的箭头展开它,您将看到几个文件。其中两个将以&#34; .tt&#34;结束。这些是T4模板,它们在您修改EDMX时自动生成模型实体和DbContext。
希望这可以澄清概念,直接回答您的问题:
问题1 :您只需要步骤1,&#34; AdventureWorks_DataEntities&#34;是你的DbContext。如果您打开&#34; AdventureWorks_DataEntities.cs&#34;文件您将看到此类继承自DbContext。
问题2 :这是一个不同的问题,您应该打开一个单独的问题,询问如何将WPF与实体框架绑定。在你这样做之前,我建议你先在网上搜索,因为有很多资源可以解释这一点。例如,这篇MSDN文章: http://msdn.microsoft.com/en-us/data/jj574514.aspx