首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在实体框架中创建对上下文对象的引用,以及如何使用DBContext对象?

如何在实体框架中创建对上下文对象的引用,以及如何使用DBContext对象?
EN

Stack Overflow用户
提问于 2011-12-12 22:42:38
回答 1查看 2.2K关注 0票数 0

我有一个正在做的项目。我决定在DBContext生成器中使用实体框架(为了保持不知情的对象),现在我遇到了一些问题。

以下是我如何设置解决方案:

解决方案:

  • MyProject (我的网络应用项目)
  • BusinessObjects (项目)包含包含所有对象(实体)的myproject.tt文件。每个文件都位于单独的.cs文件中。
  • DataAccess (项目)包含myproject.edmx、myproject.Context.tt文件

以下是我的问题:(这一切我都是新手)

假设我有对象(实体)作业,我想在这个对象上定义select、insert、update和delete方法。我在哪里这样做呢?我尝试在BusinessObjects项目中创建文件夹自定义(在这里我会把所有的自定义都放在这里)。然后,我想在那里定义我的方法,但我不知道如何创建ctx (context)对象的新实例。

这是我的代码:

代码语言:javascript
复制
namespace BusinessObjects
{
    public partial class Job
    {
        public Job GetJob(Guid Id) {
            using (var ctx = new BestGigEntities())

            }
            return null; //for now
        }
    }
}

我得到的错误消息是BestGigEntities不存在于命名空间中。BestGigEntities应该住在BusinessObjects中,但是当我尝试通过BusinessObject项目访问它时,它是不可见的。但我可以从我的主要网络项目中看到它。在myproject.Context.tt中,BusinessObjects被指定为自定义工具名称空间。为什么我看不见?

我已经检查了我的myproject.Context.cs文件,我可以看到

代码语言:javascript
复制
    public partial class BestGigEntities : DbContext
    {
        public BestGigEntities()
            : base("name=BestGigEntities")
        {
 . ...

一切似乎都很好。我几乎可以肯定,我正确地添加了所有参考资料。我在想,也许我是想在错误的地方定义这些方法?

BestGigEntities在我的网络项目中是可见的,我可以从那里使用它。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-13 01:03:22

我不建议您扩展模型的部分类。如果你熟悉MVVM模式并使用它,那就更好了。

这里被描述为一些类,比如服务和帮助。他们可能会提示你从哪里开始使项目更有条理。

在最简单的情况下,CRUD选项看起来就像

代码语言:javascript
复制
public static Job Get(int jobId)
{
    using (var context = new BestGigEntities())
    {
        return context.Jobs.FirstOrDefault(s => s.Id == jobId);
    }
}

public static void Save(Job job)
{
    using (var context = new BestGigEntities())
    {
        context.Jobs.Attach(job);
        context.Entry(job).State = EntityState.Modified;
        context.SaveChanges();
    }
}

public static void Create(Job job)
{
    using (var context = new BestGigEntities())
    {
        context.Jobs.Add(job);
        context.SaveChanges();
    }
}

public static void Delete(Job job)
{
    using (var context = new BestGigEntities())
    {
        context.Entry(job).State = EntityState.Deleted;
        context.SaveChanges();
    }
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8481970

复制
相关文章

相似问题

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