【问题标题】:.NET Core with MySQL.NET Core 和 MySQL
【发布时间】:2017-06-14 08:38:51
【问题描述】:

我看过一些视频,显示人们使用 .NET Core 使用其他数据库系统,并希望将 MySQL 与我正在构建的应用程序一起使用。将此行添加到我的 ConfigureServices 方法后运行我的应用程序时出现异常。

services.AddEntityFrameworkMySql().AddDbContext<MyDbContext>(ServiceLifetime.Singleton);

我的 project.json 文件除了添加这些包之外几乎没有变化。

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",  
"Pomelo.EntityFrameworkCore.MySql": "1.1.0",
"Microsoft.EntityFrameworkCore.Relational": "1.1.0"

这是我的最终 project.json 文件。

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",    
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",  
    "Pomelo.EntityFrameworkCore.MySql": "1.1.0",
    "Microsoft.EntityFrameworkCore.Relational": "1.1.0"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

我需要什么才能使其正常工作?在 MyDbContext 中,我重写了 OnConfiguring 方法以使用我的连接字符串。

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

    => optionsBuilder.UseMySql(@"Server=localhost;database=MyTestDb;uid=root;pwd=pwd;");  

我哪里做错了?如前所述,我在配置服务方法的 Startup.cs 中得到了这个异常,

“System.IO.FileLoadException”类型的异常发生在 Microsoft.EntityFrameworkCore.Relational.dll 但未在其中处理 用户代码

附加信息:无法加载文件或程序集 'Microsoft.Extensions.Logging.Abstractions,版本=1.1.0.0, 文化=中性,PublicKeyToken=adb9793829ddae60'。位于 程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

【问题讨论】:

  • 错误消息明确告诉您找到的程序集“Microsoft.Extensions.Logging.Abstractions”与构建加载程序集的程序集不匹配。我相信您会研究 a) 在哪里引用此程序集(或第三方程序集),b) 找到的程序集如何部署到其位置并最终匹配一个和另一个。

标签: c# mysql .net asp.net-core


【解决方案1】:

您需要升级您的项目。您的 .net 核心版本运行在 1.0.1

Microsoft.NETCore.App": {
  "version": "1.0.1",
  "type": "platform"
},

然后您加载其他依赖项,它们的版本为 1.1.0

"Pomelo.EntityFrameworkCore.MySql": "1.1.0",
"Microsoft.EntityFrameworkCore.Relational": "1.1.0"

如果您使用的是 VS 2015,您可以转到 nuget 包管理器并转到更新选项卡并更新所有具有可用更新的包。

如果您使用的是 VS 代码,则必须逐行浏览它们并在 nuget 上查找包,找出最新版本并更新版本号,然后在项目文件夹中从命令提示符运行 dotnet restore。

如果您尚未安装 .net core 1.1.0 版,则也需要安装。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    相关资源
    最近更新 更多