.net core 多项目中使用EFCore

这篇具有很好参考价值的文章主要介绍了.net core 多项目中使用EFCore。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

类库一级项目使用.net core 3.1 框架
.net core 多项目中使用EFCore
.net core 多项目中使用EFCore

其中EFCore是和数据库交互的
MultiCore 注入EFCore中的DBContext与数据库交互
主要为了解决多项目中数据库迁移失败问题

EFCore 工程安装如下包

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

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.10" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.10">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.10">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.10" />
  </ItemGroup>

</Project>

MultiCore 安装如下

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

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.10" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\EFCore\EFCore.csproj" />
  </ItemGroup>


</Project>

EFCore
person.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace EFCore.Entity
{
    public class Person
    {
        public int id { get; set; }

        public int age { get; set; }

        public string name { get; set; }
    }
}

personconfig.cs

using System;
using System.Collections.Generic;
using System.Text;
using EFCore.Entity;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace EFCore.EntityConfig
{
    internal class PersonConfig : IEntityTypeConfiguration<Person>
    {
        public void Configure(EntityTypeBuilder<Person> builder)
        {
            builder.ToTable("person");
        }
    }
}

EFDbcontext.cs

using EFCore.Entity;
using Microsoft.EntityFrameworkCore;
using System;

namespace EFCore
{
    public class EFDbContext:DbContext
    {
        public DbSet<Person> people { get; set; }
        public EFDbContext(DbContextOptions<EFDbContext> options)
            :base(options)
        {
            
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }
}

EFDbContextFac .cs
这是关键,但是这仅仅在开发环境下使用,用户数据库迁移,生产不需要

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.EntityFrameworkCore;

namespace EFCore
{
    internal class EFDbContextFac : IDesignTimeDbContextFactory<EFDbContext>
    {
        public EFDbContext CreateDbContext(string[] args)
        {
            DbContextOptionsBuilder<EFDbContext> options = new DbContextOptionsBuilder<EFDbContext>();
            options.UseNpgsql(@"Host=localhost;Database=postgres;Username=postgres;Password=postgres");
            EFDbContext eFDbContext = new EFDbContext(options.Options);
            return eFDbContext;
        }
    }
}

此时将efcore设置为启动项就可以完成数据库迁移了(add-migration update-database)

在主工程中注册EFDbcontext即可文章来源地址https://www.toymoban.com/news/detail-468979.html


        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddDbContext<EFDbContext>(options =>
            {
                options.UseNpgsql(@"Host=localhost;Database=postgres;Username=postgres;Password=postgres");
            });
        }


到了这里,关于.net core 多项目中使用EFCore的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ASP.NET Core 3.1系列(16)——EFCore之Code First

    前一篇博客介绍了 EFCore 中的 DB First 开发模式,该模式可以根据数据库生成实体类和数据库上下文,因此适用于数据库已经存在的场景。而与之相对应的, Code First 主要是根据自定义的实体类和数据库上下文反向构建数据库,因此也可以看做是 DB First 的逆过程,下面开始介绍

    2024年01月17日
    浏览(60)
  • asp.net core 6.0 efcore +sqlserver增删改查的demo

    下面是一个使用ASP.NET Core 5.0和Entity Framework Core进行增删改查操作的示例。 首先,创建一个空的ASP.NET Core 6.0 Web应用程序项目。 然后,安装以下NuGet包: Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools 接下来,创建一个数据库上下文类,用于定义实体类和数据库连接

    2024年02月13日
    浏览(44)
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级(六十)

    abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)   abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui+efcore实

    2023年04月09日
    浏览(61)
  • ASP.Net Core Web Api+EFCore+MySql实现动态查询(保姆教学)

    本文会详细讲解如何从打开文件到第一个API开发完成,过程十分详细,是基于学习入门。 现在让我们开始吧! 打开VS(演示用的Visual Studio2022) 第一步我们选择创建新项目   第二步 选择开发语言以及应用程序 我们选择C# -所有平台-Web API.找到 ASP.NET Core Web API 应用   这里应用

    2024年02月12日
    浏览(43)
  • .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

    接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。 我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家阅读和操作,我将项目down到我的本地电

    2024年02月05日
    浏览(51)
  • abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之下(六十二)

    A bp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)   abp(net core)+easyui+efcore实现仓储管理系统——

    2023年04月23日
    浏览(46)
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

      A bp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)   abp(net core)+easyui+efcore实现仓储管理系统—

    2023年04月16日
    浏览(49)
  • abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之下(六十四)

    a bp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)   abp(net core)+easyui+efcore实现仓储管理系统——

    2024年02月03日
    浏览(45)
  • abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之上(六十三)

    a bp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)   abp(net core)+easyui+efcore实现仓储管理系统——

    2024年02月02日
    浏览(54)
  • .NET使用一行命令轻松生成EF Core项目框架

    dotnet ef是Entity Framework Core(EF Core)的一个命令行工具,用于管理EF Core应用程序的数据库和代码。除了提供管理数据库的命令之外,dotnet ef还可以生成和管理实体和上下文代码。本文将介绍如何使用dotnet ef动态生成代码。 一、环境准备 1、项目准备 用vs2022新建一个.NET6的asp.

    2023年04月27日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包