首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectContext而不是DbContext

ObjectContext而不是DbContext
EN

Stack Overflow用户
提问于 2013-12-04 18:53:03
回答 2查看 3.1K关注 0票数 1

我对EntityFramewok完全陌生,但下周我必须和我的朋友一起写一个有截止日期的项目。他创建了数据访问层,并与我共享了代码。在使用ADO.NET实体数据模型之后,我在他的类中发现了错误。看来他使用了我没有的Add()方法。经过快速搜索,我发现他为上下文生成的模板继承了DbContext之后,我继承了ObjectContext之后。为甚麽会这样呢?我们使用的是相同版本的EntityFramework。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-05 06:28:31

根据您的评论,这是因为您使用的是VS2010,而他使用的是VS2012。在VS2012中,默认代码生成从ObjectContext更改为DbContext。您可以通过删除ObjectContext模板并将“代码生成策略”设置从“无”更改为“默认”,将其更改为T4。

然而,VS2010只支持v2 EDMX,而VS2012支持V3 EDMX,如果您在VS2012上创建模型,则无法在VS2010中打开它。类似地,我不确定是否可以在.NET中针对VS2010 Framework4.5,但这是VS2012中的默认设置。

理想情况下,您应该使用相同的环境,因为在VS2010和VS2012中您可以做的事情有很多不同之处。如果您不能统一您的环境,我建议您针对相同的.NET框架(除非VS2010可以针对.NET Framework4.5)使用EF6 (最新和最大的、可部署的、不依赖于System.Data.Entity.dll )--考虑到.NET Framework4.5是一个现成的更新,并且您永远不知道针对.NET框架4的应用程序实际上运行在.NET框架4或.NET Framework4.5上,并且使用CodeFirst方法来避免v2与v3 Edmx之间的问题。

票数 5
EN

Stack Overflow用户

发布于 2013-12-04 19:11:37

DbContext只是简单地充当ObjectContext的包装器。您可以做的是创建一个助手类,其中包含一个方法,该方法可以从ObjectContext中公开您的DbContext

代码语言:javascript
复制
using System.Data.Objects;

public static class DbContextExtentions
{
    /// <summary>
    /// Exposes the ObjectContext from DbContext
    /// </summary>
    public static ObjectContext ToObjectContext(this DbContext dbContext)
    {
        return (dbContext as IObjectContextAdapter).ObjectContext;
    }
}

用法:

代码语言:javascript
复制
var myObjectContext = DbContextExtentions.ToObjectContext(myFriendsDbContext);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20383501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档