【问题标题】:Implementing OWIN Database Context for ASP.NET Application Database First首先为 ASP.NET 应用程序数据库实现 OWIN 数据库上下文
【发布时间】:2014-09-11 15:57:44
【问题描述】:

我正在阅读的书说我应该使用 OWIN 来获取我的数据库上下文的实例以使用 Identity...但是我首先使用数据库,所以我想要一个数据库上下文的实例以供整个使用我的应用程序。

我通过以下方式为 OWIN 实现了“开始”类:

using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using uQuiz.Domain;
using uQuiz.Domain.Concrete;
using uQuiz.WebUI.Infrastructure;

namespace uQuiz
{
    public class OwinStart
    {
        /// <summary>
        /// Configures OWIN
        /// </summary>
        /// <param name="app"></param>
        public void Configuration(IAppBuilder app)
        {
            app.CreatePerOwinContext<QuizEntities>(GetQuizEntities);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        }

        /// <summary>
        /// Returns an instance of the QuizEntities database context for OWIN
        /// </summary>
        /// <returns></returns>
        public static QuizEntities GetQuizEntities()
        {
            return new QuizEntities();
        }
    }
}

如您所见,我在那里有一个函数,它只生成我的数据库上下文 QuizEntities 的单个实例,这是数据库首先自动生成的。

我知道在您的数据库上下文中有一个“创建”方法是正常的做法,但我不能这样做,因为它是自动生成的。

我的问题:

  • 以这种方式“按 OWIN”创建实例是否有不利之处?
  • 这是一种可接受的实施方式吗?
  • 是否可以为应用程序中的身份和其他请求使用相同的数据库上下文?

【问题讨论】:

  • 这不是基于意见的我要求针对这种情况的最佳实践,即使用 OWIN 但首先获取我的数据库实例用于数据库(不是代码优先)并将其用于身份框架和对于其他请求。谢谢

标签: c# asp.net-mvc dbcontext owin


【解决方案1】:

您正在为每个 OWIN 上下文创建一个数据库上下文,而不是每个 OWIN。这不是一个实例。对于每个传入的请求,都会创建一个数据库上下文。所以 OWIN 为每个请求调用GetQuizEntities 来创建一个新的数据库上下文。

以这种方式“按 OWIN”创建实例有不利的一面吗?

不,您必须按照现在的方式进行操作,否则您的数据库上下文会变得臃肿。每个请求创建一个新的数据库上下文。对。

这是一种可接受的实现方式吗?

是的。

对于身份和应用程序中的其他请求使用相同的数据库上下文是否可以接受?

我不确定你的意思。

【讨论】:

  • 感谢您的回答:)。关于第三个问题,我对身份框架和其他实体框架请求使用相同的数据库上下文。我只是想知道对于身份框架和一般实体框架请求使用相同的数据库上下文是可以的。
  • 完全没问题。 DbContext 唯一的缺点是它将从数据库中获取的任何对象存储在内存中。因此,如果您对大量查询使用单个数据库上下文,它会变慢并消耗大量内存。这就是我们为每个请求创建一个数据库上下文的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多