加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 使用Scaffold-DBContext设置数据库优先EF项目

发布时间:2020-12-16 03:24:44 所属栏目:asp.Net 来源:网络整理
导读:我有一个数据库,我正在尝试建立一个数据库第一个EF项目.我的项目是一个使用.Net Core的Web API项目.像我发出的命令是这样的: Scaffold-DbContext "Server=ServerInstance;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.Sq
我有一个数据库,我正在尝试建立一个数据库第一个EF项目.我的项目是一个使用.Net Core的Web API项目.像我发出的命令是这样的:

Scaffold-DbContext "Server=ServerInstance;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

但是,我收到以下错误:

Could not load file or assembly 'Microsoft.EntityFrameworkCore.Design' or one of its dependencies. The system cannot find the file specified.

System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.EntityFrameworkCore.Design' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.EntityFrameworkCore.Design'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,RuntimeAssembly reqAssembly,Boolean suppressSecurityChecks)
   at System.Activator.CreateInstance(String assemblyString,String typeName,Boolean ignoreCase,BindingFlags bindingAttr,Binder binder,Object[] args,CultureInfo culture,Object[] activationAttributes,Evidence securityInfo,StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(String assemblyName,Object[] activationAttributes)
   at System.AppDomain.CreateInstance(String assemblyName,Object[] activationAttributes)
   at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName,Object[] activationAttributes)
   at Microsoft.EntityFrameworkCore.Tools.AppDomainOperationExecutor..ctor(String assembly,String startupAssembly,String projectDir,String contentRootPath,String dataDirectory,String rootNamespace,String environment)
   at Microsoft.EntityFrameworkCore.Tools.Commands.ProjectCommandBase.CreateExecutor()
   at Microsoft.EntityFrameworkCore.Tools.Commands.DbContextScaffoldCommand.Execute()
   at Microsoft.DotNet.Cli.CommandLine.CommandLineApplication.Execute(String[] args)
   at Microsoft.EntityFrameworkCore.Tools.Program.Main(String[] args)

此项目的依赖项如下:

"dependencies": {
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0","Microsoft.NETCore.App": "1.1.0","NETStandard.Library": "1.6.1","Microsoft.ApplicationInsights.AspNetCore": "2.0.0","Microsoft.AspNetCore.Mvc": "1.1.1","Microsoft.AspNetCore.Routing": "1.1.0","Microsoft.AspNetCore.Server.IISIntegration": "1.1.0","Microsoft.AspNetCore.Server.Kestrel": "1.1.0","Microsoft.Extensions.Configuration.Json": "1.1.0","Microsoft.Extensions.Logging": "1.1.0","Microsoft.Extensions.Logging.Console": "1.1.0","Microsoft.Extensions.Logging.Debug": "1.1.0","Microsoft.EntityFrameworkCore": "1.1.0","Microsoft.EntityFrameworkCore.SqlServer": "1.1.0","Microsoft.EntityFrameworkCore.Tools": "1.1.0-msbuild3-final","Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0","Microsoft.EntityFrameworkCore.Relational.Design": "1.1.0","Microsoft.EntityFrameworkCore.Design": "1.1.0","System.Collections.NonGeneric": "4.3.0","Microsoft.AspNetCore.Hosting.Abstractions": "1.1.0"
  },

如您所见,它被引用.

有人能指出我在这个方向上正确的方向吗?

编辑:

在它之前的当前(完整)project.json:

{
  "dependencies": {
    "Microsoft.ApplicationInsights.AspNetCore": "2.0.0","Microsoft.AspNetCore.Hosting.Abstractions": "1.1.0","Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final","Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0","System.Collections.NonGeneric": "4.3.0"
  },"tools": {
    "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
    }
  },"runtimes": {
    "win10-x64": {}
  },"publishOptions": {
    "include": [
      "wwwroot","**/*.cshtml","appsettings.json","web.config"
    ]
  },"scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

使用此配置,我收到编译错误:

Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x86,win81-x86,win8-x86,win7-x86'. Possible causes:   JourneyService  C:Program Files (x86)MSBuildMicrosoftVisualStudiov14.0DotNetMicrosoft.DotNet.Common.Targets  262 Build

解决方法

请执行以下步骤.

>将.Net Core SDK更新为最新的最新版本. (对于新的1.0.0-preview2-1-003177). download link

enter image description here

>在gobal.json文件中更新.Net Core SDK版本
>在project.json的frameworks部分更新netcoreapp版本

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

>将这些包添加到`project.json

"Microsoft.EntityFrameworkCore.SqlServer.Design": {
  "version": "1.1.0","type": "build"
},"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.1.0-preview4-final","type": "build"
}

>更新project.json中的工具部分,并添加Microsoft.EntityFrameworkCore.Tools最新版本

"tools": {
   "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
},

命令:

`Scaffold-DbContext "Server=ServerInstance;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models`

完成project.json文件.

{
  "dependencies": {
    "Microsoft.ApplicationInsights.AspNetCore": "2.0.0","Microsoft.NETCore.App": {
      "version": "1.1.0","type": "platform"
    },"Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.1.0","type": "build"
    },"Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.1.0-preview4-final","type": "build"
    }
  },"tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final","Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },"frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6","scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读