首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net mvc如何处理在另一个DBcontext对象内启动的DBContext对象

asp.net mvc如何处理在另一个DBcontext对象内启动的DBContext对象
EN

Stack Overflow用户
提问于 2016-03-24 15:55:35
回答 1查看 295关注 0票数 1

我正在工作的asp.net mvc-4 web应用程序,我正在使用实体框架5.0。现在,我已经使用ado.net实体框架映射了我的数据库表,该框架生成了一个.edmx文件和DBContext类。

现在我不知道asp.net mvc如何处理以下场景:

我有一个存储库模型类,它直接与数据库实体交互,如下所示:

代码语言:javascript
复制
public class Repository
{

        private MyEntities my = new MyEntities();
 public void Save()
        {
            my.SaveChanges();
        }

此外,我还有以下Controller类,它们启动上述存储库和另一个API存储库类,如下所示:

代码语言:javascript
复制
        public class ServerController : Controller
         {
           Repository repository = new Repository();
           APIRepository APIrepository = new APIRepository();
           //code goes here
           Public ActionResult Create(Emp e)
             {
               //code goes here..
               var result = APIreposioty.SendCall(...); 
               repository.Save();
             }

APIRepositoty还启动存储库,如下所示:

代码语言:javascript
复制
public class APIRepository
    {
        Repository repository = new Repository();

现在,在我的控制器类中,我有以下内容:-

  1. 它直接启动存储库类,其中repo类启动MyEntities()。
  2. 它启动APIrepository类,其中APIrepo类初始化存储库类。

现在,当我在action方法中调用repositoty.Save()时?它会将实体对象保存在存储库中&在APIrepository中吗?还是会有两个独立的上下文对象由用户会话管理?他们不互相干涉吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-24 17:06:04

您的控制器最终创建了实体上下文的不同实例。他们不受任何约束。对其中一个文件的保存只会保存它已加载/注册的实体。另一个处理的实体将不会被保存。

对于您的情况,一种常用的处理模式是使用依赖注入。将其配置为每个控制器只实例化一个DBContext,无论控制器使用多少存储库(直接或通过其他依赖项)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36204556

复制
相关文章

相似问题

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