如何在ASP.NET Core MVC应用程序的单独的类库中首先设置EFcore数据库?

时间:2018-11-13 07:06:40

标签: asp.net-core entity-framework-core

我有一个数据库,我想为实体框架添加一个单独的类库来访问数据,但是当我运行scaffold命令时,它将在我的Web应用程序中创建一个数据库模型。

2 个答案:

答案 0 :(得分:0)

您应该在包管理器控制台中选择 Data 项目作为默认项目

enter image description here

请注意,您在data.csproj中有ef核心引用

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.0.5</RuntimeFrameworkVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0-preview3-35497" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.0-preview3-35497" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0-preview3-35497" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0-preview3-35497"/>
    <PackageReference Include="System.Data.Common" Version="4.2.1" />
  </ItemGroup>

</Project>

我意识到ClassLibrary项目中存在一些错误。您可以看看它们:

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#targeting-class-library-projects-is-not-supported

https://github.com/dotnet/cli/issues/8735

https://github.com/aspnet/EntityFrameworkCore/issues/10298

答案 1 :(得分:0)

@ibrahimozgon的答案是正确的,对我有所帮助。但是,我在DbContext类中遇到了一些错误,但他没有提到如何解决:

'EntityTypeBuilder'不包含'ToTable'的定义,找不到可以接受的扩展方法'ToTable',它接受类型为'EntityTypeBuilder'的第一个参数(您是否缺少using指令或程序集引用?

'KeyBuilder'不包含'ForSqlServerIsClustered'的定义,并且找不到可以接受的扩展方法'ForSqlServerIsClustered'接受类型为'KeyBuilder'的第一个参数(您是否缺少using指令或程序集引用?

要解决DbContext类中的这些错误,请再次打开包管理器控制台,然后选择默认项目作为类库。依次输入以下命令:

- Install package:  Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.4  (or whichever latest version)
- Install package:  Install-Package Microsoft.EntityFrameworkCore.Relational -Version 2.2.4  (or whichever latest version)
- If errors persist try: Install-Package or Update-Package  Microsoft.EntityFrameworkCore.Tools  (or whichever latest version)