我正在按照Scott Gu的一个教程来引用一个名为DbContext的类.我无法在框架4上的任何命名空间中找到它,在我看来,它已从CT4 DbContext重命名为.net4 System.Data.Linq.DataContext.我的假设是否正确?
我应该使用ObjectContext还是DbContext?什么是最好的方式?
CTP5附带的DbContext T4模板没有关联修正,并且并非所有属性都标记为虚拟.这是否意味着它与上下文断开连接时不支持ChangeTracking?首先,它是否支持ChangeTracking,即使在被Context(通过动态代理)跟踪时也是如此?我发现变更跟踪的要求是所有属性都应标记为虚拟.
与EF4 POCO生成器相比,我们是否正在使用DbContext生成器丢失任何功能?
非常感谢任何回应.
存储库模式用于从特定数据库和对象关系映射技术(如EF)中抽象使用.因此,如果我决定这样做,我可以在将来轻松替换(例如)我的实体框架映射与Linq to SQL.
但是当我使用EF时,我从模型中获得了我的实体类 - 也就是说它们是从该可视化图中生成的.如果我在我的存储库中使用这个生成的实体类,然后决定用其他东西替换EF,那么我将删除那个可视化实体图,这也意味着删除类吧?
我要解决的问题是我的存储库将依赖于实体框架,即数据访问层,因为它将使用EF生成的类.
如何删除此依赖项?
另请注意,我使用EF主要是因为它能够从该可视化图生成所有内容 - 我只是设计图表并让它为我生成所有外键等数据库.我非常喜欢,甚至不想想想SQL命令.
.net asp.net-mvc entity-framework repository repository-pattern
我正在使用EF 4.1并使用DB第一种方法.我也创建了我的.edmx文件.现在我想创建我的POCO课程.
为此,我已经从NuGet安装了EF 4.x DbContext Generator以及EF 4.x POCO实体生成器.
我完全知道建议使用DbContext for EF 4.1+,因为它是从ObjectContext派生的.但是,我仍然使用EF 4.x POCO实体生成器,然后通过EF 4.x DbContext Generator生成我的POCO类.
编辑:发现这个ADO.NET DbContext生成器与ADO.NET Poco实体生成器(ObjectContext)
在任何一种情况下,它都会生成.Context.tt和Model.tt文件.那么这两种工具生成的文件的确切区别是什么?为什么建议在EF 4.1+上使用DbContext?
我还想知道ObjectContext的局限性.
我首先使用实体框架代码,并得到以下编译错误.dbcontext不包含"刷新"的定义.我已经看到许多使用Refresh方法的例子.但是当我将Refresh方法添加到我的dbcontext时,我得到了一个complilation错误.我正在使用以下命名空间.
using System.Data;
using System.Data.Entity;
using System.Data.Linq;
Run Code Online (Sandbox Code Playgroud)
Am I missing one? I tried to look it up but did not find the namespace.
我正试图加强实体框架,所以我不觉得自己处于黑暗时代.我尝试(并且迄今为止失败)从生成的代码中直觉了解可用代码生成项之间的本质区别.
似乎POCO将实体数据结构与将数据移入/移出数据存储区的ojbect隔离开来.
我不确定"自我跟踪实体"是什么.我猜测跟踪部分是指实现所谓的"工作单元"模式,但我不是正面的.更令人头疼的是,我想我想知道"自我追踪而不是什么?".

我在Sql Server中有这个查询,我需要在EntityFramework中使用,那么如何编写一个与此结果相同的EntityFramwork代码
WITH cte AS
(
SELECT *
FROM StockGroups
WHERE GroupParent ='Stationery'
UNION ALL
SELECT g.*
FROM StockGroups g
JOIN cte
ON g.GroupParent = cte.GroupName
)
SELECT *
FROM cte
Run Code Online (Sandbox Code Playgroud)
我不知道如何在EF中转换它,所以我尝试使用join.
from a in db.StockGroups
join b in db.StockGroups on new { GroupParent = a.GroupParent } equals new { GroupParent = b.GroupName }
where
b.GroupName == "Stationery"
select new {
a.GroupName,
a.GroupParent,
Column1 = b.GroupName,
Column2 = b.GroupParent
}
Run Code Online (Sandbox Code Playgroud)
但结果并不像CTE一样递归.
c# ×4
.net ×2
asp.net-mvc ×1
database ×1
entity ×1
frameworks ×1
linq ×1
poco ×1
repository ×1