Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何在实体框架中创建对上下文对象的引用,以及如何使用DBContext对象?_Entity Framework_Reference_Entities_Dbcontext - Fatal编程技术网

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

Entity framework 如何在实体框架中创建对上下文对象的引用,以及如何使用DBContext对象?,entity-framework,reference,entities,dbcontext,Entity Framework,Reference,Entities,Dbcontext,我正在做一个项目。我决定将实体框架与DBContext生成器一起使用(使持久性不受影响的对象),现在我遇到了一些问题 以下是我设置解决方案的方式: 解决方案: -MyProject(我的web应用程序项目) -BusinessObjects(project)包含myproject.tt文件,其中包含所有对象(实体)。每个都在单独的.cs文件中。 -DataAccess(project)包含myproject.edmx、myproject.Context.tt文件 这是我的问题:(我对这一切都不熟

我正在做一个项目。我决定将实体框架与DBContext生成器一起使用(使持久性不受影响的对象),现在我遇到了一些问题

以下是我设置解决方案的方式:

解决方案:
-MyProject(我的web应用程序项目)
-BusinessObjects(project)包含myproject.tt文件,其中包含所有对象(实体)。每个都在单独的.cs文件中。
-DataAccess(project)包含myproject.edmx、myproject.Context.tt文件

这是我的问题:(我对这一切都不熟悉)

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

这是我的密码:

namespace BusinessObjects
{
    public partial class Job
    {
        public Job GetJob(Guid Id) {
            using (var ctx = new BestGigEntities())

            }
            return null; //for now
        }
    }
}
我得到的错误消息是,名称空间中不存在BestGigEntities。 BestGigEntities应该存在于BusinessObjects中,但当我试图从withing BusinessObject项目访问它时,不知何故它是不可见的。但我可以从我的主要网络项目中看到它。 在myproject.Context.tt中,我将BusinessObjects指定为自定义工具命名空间。为什么我看不见

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

    public partial class BestGigEntities : DbContext
    {
        public BestGigEntities()
            : base("name=BestGigEntities")
        {
 . ...
一切似乎都很好。我几乎可以肯定我正确地添加了所有引用。我在想也许我试图在错误的地方定义这些方法

从我的web项目中可以看到这些实体,我可以从那里使用它们


非常感谢您的帮助。

我不建议您扩展模型的部分类。如果你熟悉并使用它会更好
描述了一些类,如服务和助手。他们可能会提示您从何处开始使项目更加结构化
至于积垢的操作,在最简单的情况下

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();
    }
} 

BestGigEntities应该在BusinessObjects名称空间中,因为它显然不在名称空间中,它在什么名称空间中?是的。它位于BusinessObjects命名空间中。Context.cs文件在DataAccess项目中,正如我所说的,DataAccess项目中的tt文件将BusinessObjects指定为自定义工具名称空间,这与它在哪个项目中无关。命名空间在不同的程序集中可以有相同的命名空间,在同一程序集中可以有不同的命名空间。如果它说它不在名称空间中,它就不在名称空间中。我感谢您的评论。我宁愿现在不去MVC。看了一下你给我的链接,(对我来说)这个主题似乎需要一些认真的时间投入。我只是试图将数据和业务对象层从.NETWeb应用程序项目中分离出来。网上有很多这样的例子:我只需要知道我应该把我的CRUD方法放在哪里,对于我目前的架构,我想如果你把所有的CRUD方法加入一个新的服务类中会很方便。您可以使用或创建许多服务类(每个实体一个)。