【问题标题】:Connection String For .Net Core application from .Net Standard Entity Framework 6.0.Net Standard Entity Framework 6.0 中 .Net Core 应用程序的连接字符串
【发布时间】:2022-01-24 02:34:08
【问题描述】:

我是 .Net Core 的新手,

我一直在使用 .Net Framework 来开发应用程序(Web App / Web API)。 我已经开发了我的自定义框架并且它已经建立了。我的自定义框架使用 Entity Framework 6.0 (DB First) 现在,我已分配在 .Net Core 中开发 Web Api。但仍然使用我的自定义框架来处理数据。 在 .net 核心 web api 上,我需要在 .net 标准上分配连接字符串,如 web api 在 .Net Standard 中,我的连接字符串如下所示

  <connectionStrings>
  <add name="CompanyEntities"
    connectionString="metadata=res://*/CompanyModel.csdl|res://*/CompanyModel.ssdl|res://*/CompanyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=127.0.0.10;initial catalog=XYZ;persist security info=True;user id=sa;password=zzzxxx123!;multipleactiveresultsets=True;application name=EntityFramework&quot;"
    providerName="System.Data.EntityClient"/>

对于使用 .Net 标准框架 (WebApp/WebApi) 的应用程序...这没有问题。运行正常

但我不知道,如何在 .Net Core 上设置连接字符串?请帮忙

我试过这样的连接字符串但失败了


    "ConnectionStrings": {
    "CompanyEntities": "Data Source=127.0.0.10;Database=xyz;uid=sa;pwd=zzzxxx123!;MultipleActiveResultSets=true;Integrated Security=False"
  }

这是错误:

严重性代码描述项目文件行抑制状态 错误 CS0311 类型“Classes.Model.Data.Library.CompanyEntities”不能用作泛型类型或方法“EntityFrameworkServiceCollectionExtensions.AddDbContext(IServiceCollection, Action, ServiceLifetime, ServiceLifetime)”中的类型参数“TContext”。没有从“Classes.Model.Data.Library.CompanyEntities”到“Microsoft.EntityFrameworkCore.DbContext”的隐式引用转换。

这是我的 dbcontext

 public partial class CompanyEntities : DbContext
{
    public CompanyEntities()
        : base("name=CompanyEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

【问题讨论】:

    标签: asp.net entity-framework asp.net-core .net-core c#-4.0


    【解决方案1】:

    试试这个:

    "ConnectionStrings": {
        "CompanyEntities": "Server=yourServerName; Database=xyz;Trusted_Connection=True;"
      },
    

    请注意,您需要为要访问的数据库提供程序安装 NuGet 包。
    例如,如果要使用 MS SQL Server 数据库,则需要安装Microsoft.EntityFrameworkCore.SqlServer NuGet 包。
    您还需要为 EF 工具安装 NuGet 包Microsoft.EntityFrameworkCore.Tools

    确保将其添加到您的 startup.cs:

    services.AddDbContext<YourContext>(options => options.UseSqlServer
                (Configuration.GetConnectionString("CompanyEntities")));
    

    如下修改你的dbcontext:

     public partial class CompanyEntities : DbContext
    {
        public CompanyEntities()
        {
        }
    
        public CompanyEntities(DbContextOptions<CompanyEntities> options)
            : base(options)
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    

    查看 EF Core 上的 this tutorial

    如果你想在 .NET 核心中使用 EF 6(不是核心),this 可能有用,但我个人之前没有使用过。

    【讨论】:

    • 很抱歉,我不知道我必须将代码放在 startup.cs 的什么位置
    • 放入ConfigureServices(IServiceCollection services)方法
    • 它不起作用。代码 services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("CompanyEntities"))); 发生错误
    • 我已经更新了我的答案。如果没有帮助,请提供错误消息。
    • 我更新了我的帖子。请帮忙..
    【解决方案2】:

    在您的 DBContext 类中尝试以下代码:-

    public class CompanyEntities : DbContext
    {
        public CompanyEntities (DbContextOptions<CompanyEntities> options)
            : base(options)
        { }
    
      ...
       
    }
    

    希望现在它能解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 2020-01-07
      • 1970-01-01
      • 2014-02-17
      • 2023-03-18
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      相关资源
      最近更新 更多