如何为 ASP.net Core 配置 Entity Framework 6

Posted

技术标签:

【中文标题】如何为 ASP.net Core 配置 Entity Framework 6【英文标题】:How to configure Entity Framework 6 for ASP.net Core 【发布时间】:2017-03-23 20:06:54 【问题描述】:

我正在尝试配置一个新项目以使用Entity Framework 6ASP.net Core,我正在使用完整的.net 框架以便能够使用Entity Framework 6。这是一个之前在 MVC 中的项目,我需要将它迁移到 Core。 这就是我所做的(我有两个项目,一个Asp.net Core 和一个包含一些类的class libraryDBContext class):

appsettings.json:

  "Data": 
    "ConnectionStrings": 
      "MyConnection": "Server=namedatabase.database.secure.windows.net,1433;Database=database_Name;User ID=blahblah;Password=blahblah;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    
  

Startup.cs

 public void ConfigureServices(IServiceCollection services)
        
         services.AddScoped<MyDBContext>(_ => new LIGDataContext(Configuration.GetConnectionString("MyConnection")));
        

我将DBContext 类分隔在class library(.dll) 中:

  public class MyDBContext: DbContext
    
 public MyDBContext(string connString): base(connString)
        
        

但是我在我的asp.net Core 项目的一些控制器中有这段代码,我不确定现在如何引用DBContext 实例......显然是要求connString 参数,这是第一个当我这样做时,我不确定哪种方法是最好的方法,ConfigurationManagerCore 中不再可用我需要做什么?这是 Entity Framework 6 没有 Entity Framework Core..

     public class MyController : Controller
        
           public ActionResult MyAction()
              
                  var _ctx = new MyDBContext();
                  return PartialView(_ctx.FormsiteApplications.Where(f => f.Application).OrderBy(f => f.Title).ToList());
              

【问题讨论】:

您正在使用services.AddScoped&lt;MyDBContext&gt;(_ =&gt; new LIGDataContext(Configuration.GetConnectionString("MyConnection"))); 配置ConfigureServices() 中的DbContext 注入。有什么理由不让 DbContext 通过属性注入控制器(您正在实例化它var _ctx = new MyDBContext();)?我认为它应该有效。 【参考方案1】:

dime2lo 是对的,你可以将 DbContext 注入到控制器中。

codepublic class StoreController : Controller

    private DefaultDbContext _dbContext = null;
    public StoreController(DefaultDbContext dbContext)
    
        this._dbContext = dbContext;
        //Do something with this._dbContext ...
    

或创建上下文工厂

public class DefaultDbContextFactory : IDbContextFactory<DefaultDbContext>
public DefaultDbContext Create()

    return new DefaultDbContext("Server=XXXX ;Database=XXXXX;Trusted_Connection=True;");

Reference : Getting Started with ASP.NET Core and Entity Framework 6

【讨论】:

以上是关于如何为 ASP.net Core 配置 Entity Framework 6的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ASP.NET Core 注册和使用 MediatR 管道处理程序?

如何为 ASP.NET Core 2.2 项目中的子域正确启用 CORS?

如何为 ASP.net/C# 应用程序配置文件值中的值添加与号

ASP.NET Core 标识:角色管理器没有服务

如何在 ASP.NET (Core 2) Web 应用程序中访问来自 AWS 的认证?

如何为asp.net 4.0编写IIS预热脚本?