C# 当Edmx执行相同的任务时,为什么要使用EF 5.X DbContext生成器?
我发现EF5DBContext很难理解 在VisualStudio 2012中,当我选择C# 当Edmx执行相同的任务时,为什么要使用EF 5.X DbContext生成器?,c#,entity-framework,C#,Entity Framework,我发现EF5DBContext很难理解 在VisualStudio 2012中,当我选择 Project>addnewitem>ADO.Net实体数据模型 然后选择AdventureWorks数据库文件,它将生成一个edmx文件(要求我在本地复制数据库文件后) 现在,我可以开始运行查询了 AdventureWorks_DataEntities entities = new AdventureWorks_DataEntities var query = from p in entities.Pro
Project>addnewitem>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是一个两步过程是正确的吗
问题第1部分:
步骤1:添加从数据库生成的新edmx文件
步骤2:添加一个新的DbContext,它将自动检测上述edmx文件,并提供一个DbContext,用户可以将控件绑定到该DbContext,如datagrids等
问题第二部分:
我已经可以在步骤1中从Product表映射到我的edmx模型中的Product.cs
,为什么我不能直接将我的WPF控件绑定到它,为什么上面的步骤2是必要的
谢谢当您添加新的“ADO.NET实体数据模型”时,除了创建EDMX之外,它还为您创建了DbContext,即“AdventureWorks\U DataEntities”
因此,您不需要添加“EF 5.X DBcontext生成器”,它已经存在于您的项目中。如果在Visual Studio中单击.edmx文件左侧的箭头将其展开,您将看到多个文件。其中两个将以“.tt”结尾。这些是T4模板,负责在修改EDMX时自动生成模型实体和DbContext
希望这能澄清概念,直接回答您的问题:
问题1:您只需要步骤1,“AdventureWorks\u DataEntities”是您的DbContext。如果打开“AdventureWorks_DataEntities.cs”文件,您将看到该类继承自DbContext
问题2:这是一个不同的问题,您应该打开一个单独的问题,询问如何将WPF与实体框架绑定。在你这么做之前,我建议你先在网上搜索,因为有很多资源可以解释这一点。例如,此MSDN文章:
没有投票,没有意见,没有答案,至少这为我赢得了一枚TumbleWeeder徽章……我在寻找完全相同的答案……值得一提的是,如果您采用代码优先的方法,您将不会为您生成DBContext,因此您需要自己制作一个。这就是它存在的原因。