.NetCore3.1中, EFcore 实现 数据迁移, DbFirst 一对多查询 连接字符串 配置

如何使用 .Net Core 实现数据库迁移 (Database Migration) 当我们在编写基于数据库的应用程序时,随着需求的增加和改变,我们需要升级我们的数据库,变更数据库表的字段,当我们的系统的不同版本被部署到了不同的客户那里,在需要给客户升级时,我们如何实现数据库模式 (schema) 的自动升级呢? 阅读详情

打开cmd

dotnet publish -r win10-x64 /p:PublishSingleFile=true

生成exe

首先引入包

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

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

	<ItemGroup>
		<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.1.0" />
		<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.22" />
		<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="3.1.22" />
		<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.22">
			<PrivateAssets>all</PrivateAssets>
			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
		</PackageReference>
		<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.22" />
		<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.22">
			<PrivateAssets>all</PrivateAssets>
			<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
		</PackageReference>
		<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
		<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
		<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="6.0.0" />
		<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
		<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.2.7" />
	</ItemGroup>

	<ItemGroup>
	  <None Update="ConnString.json">
	    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
	  </None>
	</ItemGroup>

</Project>


DotNet6配置

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.3">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.1" />
  </ItemGroup>

  <ItemGroup>
    <None Update="config.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

连接字符串文件:

{
  "DbContext": {
    "ConnectionString": "server=localhost; Database=FakeXiechengDb; User Id=sa; Password=PAssword12!;",
    "MySQLConnectionString": "server=192.168.85.102; database=OneToMany; uid=root; pwd=123456;"
  }
}
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "DbContext": {
    "ConnectionString": "server=localhost; Database=FakeXiechengDb; User Id=sa; Password=PAssword12!;",
    "MySQLConnectionString": "server=localhost; database=FakeXiechengDb; uid=root; pwd=123456;"
  },
  "Authentication": {
    "SecretKey": "suibianStringsuibianString",
    "Issuer": "zgWebTestzgWebTest",
    "Audience": "zgWebTestzgWebTest"
  }
}

建立实体类

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

namespace EFCoreOneToMany
{
    public class Article
    {
        public long Id { get; set; }
        public string Title { get; set; }
        public string Message { get; set; }
        public List<Comment> Comments { get; set; } = new List<Comment>();

    }
}


namespace EFCoreOneToMany
{
    public class Comment
    {
        public long Id { get; set; }
        public Article Article { get; set; }
        public long ArticleId { get; set; } //外键
        public string Message { get; set; }
    }
}

使用//Fluent API 配置实体类, 这样有利于解耦

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

namespace EFCoreOneToMany
{
    public class ArticleConfig : IEntityTypeConfiguration<Article>
    {
        public void Configure(EntityTypeBuilder<Article> builder)
        {
            builder.ToTable("Aticle"); // "Aticle" 表名
            builder.HasKey(a => a.Id); //设置主键
            builder.Property(a => a.Title).HasMaxLength(100).IsUnicode();
            builder.Property(a => a.Message).IsUnicode();
            //在此处配也可以
            //builder.HasMany<Comment>(a=>a.Comments)
            //    .WithOne(c=>c.Article)
            //    .HasForeignKey(c=>c.ArticleId);
        }
    }
}


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

namespace EFCoreOneToMany
{
    public class CommentConfig : IEntityTypeConfiguration<Comment>
    {
        public void Configure(EntityTypeBuilder<Comment> builder)
        {
            builder.ToTable("Comment");
            builder.HasKey(a => a.Id); //设置主键
            builder.Property(a => a.Message).IsUnicode();
            //builder.HasOne<Article>(c => c.TheArticle).WithMany(a => a.Comments);
            //EFcore会自动在Comment中建立一个 TheArticle.Id的属性,是外键
            //在多的实体类中创建
            //如果指定了外键, 也需要在此声明
            builder.HasOne<Article>(c => c.Article)
                .WithMany(a => a.Comments)
                .HasForeignKey(c=>c.ArticleId);
        }
    }
}


建立DBContext

using Microsoft.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Debug;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;

namespace EFCoreOneToMany
{
    public class MyDbContext : DbContext
    {
        //显示输出SQL日志
        //Microsoft.Extensions.Logging.Debug Logging.Console
        private ILoggerFactory loggerFactory = LoggerFactory.Create(b=>b.AddConsole());
        public DbSet<Article> Articles { get; set; } //API中的名字
        public DbSet<Comment> Comments { get; set; }

        //通过json 读取数据库连接字符串
        //依赖于 Microsoft.Extensions.Configuration; Microsoft.Extensions.Configuration.Json
        private ConfigurationBuilder cfgBuilder = new ConfigurationBuilder();


        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);


            //Microsoft.Extensions.Configuration.JsonConfigurationExtensions
            cfgBuilder.AddJsonFile("ConnString.json", optional: true, reloadOnChange: true);
            IConfigurationRoot configRoot = cfgBuilder.Build();

            //字符串不能有空格
            string connString = configRoot.GetSection("DbContext:MySQLConnectionString").Value;

            optionsBuilder.UseMySql(connString);
            //optionsBuilder.UseMySql("server=192.168.85.102; database=OneToMany; uid=root; pwd=123456");

            //显示输出SQL日志
            optionsBuilder.UseLoggerFactory(loggerFactory); //旧

            // .net5, .ne6
            //optionsBuilder.LogTo(msg =>
            //{
            //    Console.WriteLine(msg);
            //});
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //加载初始数据
            var iniArticleData = File.ReadAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"/Database/iniArticle.json");
            IList<Article> article = JsonConvert.DeserializeObject<IList<Article>>(iniArticleData);

            //var iniCommentData = File.ReadAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"/Database/iniComment.json");
            //IList<Comment> comment = JsonConvert.DeserializeObject<IList<Comment>>(iniCommentData);

            modelBuilder.Entity<Article>().HasData(article);
            //modelBuilder.Entity<Comment>().HasData(comment);

            base.OnModelCreating(modelBuilder);
            //从当前程序集加载所有的IntityTypeConfiguration 反射
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);

            //.net 6.0
            //modelBuilder.Configurations.AddFromAssembly(typeof(MyDbContext).Assembly);
        }
    }






    //VS终端下
    // 视图-其他窗口-程序包控制台
    //选择默认项目
    //add-migration initialMigration //创建数据迁移
    //add-migration initialMigration1 //创建数据迁移
    // update-database
    //Remove-migration 删除最后一次脚本
    //Script-Migration 显示迁移的sql脚本

    //DBfirst
    // Scaffold-DbContext "server=192.168.207.107; database=Demon1; uid=root; pwd=123456" Pomelo.EntityFrameworkCore.MySql

    //根据已有数据库创建数据模型。在 NuGet 的程序包管理(Package Manager)控制台中(PowerShell)执行命令:
    //Scaffold-DbContext "server=数据库服务器;uid=数据库用户名;pwd=数据库密码;database=数据库名;" Pomelo.EntityFrameworkCore.MySql -OutputDir Data -Force
    //.Net Core CLi:dotnet ef dbcontext scaffold "server=数据库服务器;uid=数据库用户名;pwd=数据库密码;database=数据库名;" Pomelo.EntityFrameworkCore.MySql -o Data -f



    //CMD 命令下 安装EF工具:
    //dotnet tool install --global dotnet-ef
    //数据迁移:
    //dotnet ef migrations add DataSeeding
    //数据更新:
    //dotnet ef database update
    /*
     * cmd命令:
     Mysql数据库:
    docker run --name mysqltest -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

    dotnet ef migrations add MySQLInit
    dotnet ef database update
    dotnet ef database update MySQLUpdate3 回滚 对应版本
     */

    //P56
}


加入一对多

using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;

namespace EFCoreOneToMany
{
    class Program
    {
        static void Main(string[] args)
        {
            ////插入外键实验 一对多的插入
            //using (MyDbContext context = new MyDbContext())
            //{
            //    Article a1 = new Article()
            //    {
            //        Title = "蜡笔小新",
            //        Message = "这个蜡笔小新动画好看吗",
            //    };

            //    //虽然在CommentConfig里指定了
            //    //builder.HasOne<Article>(c => c.TheArticle).WithMany(a => a.Comments).IsRequired();
            //    //外键关系不为0 , 但是用此种方法可以不填写Comment中的ArticleId
            //    Comment c1 = new Comment();
            //    c1.Message = "蜡笔小新不好看";
            //    Comment c2 = new Comment();
            //    c2.Message = "蜡笔小新好看";

            //    a1.Comments.Add(c1);
            //    a1.Comments.Add(c2);

            //    //只需要加入了a1, comment的2个评论自动加入conments表中, 俗称顺杆爬
            //    context.Articles.Add(a1);
            //    context.SaveChanges();
            //}

            
            using (MyDbContext dbContext = new MyDbContext())
            {
                //一对多的查询 Include(a=>a.Comments)
                Article a = dbContext.Articles.Include(a=>a.Comments).FirstOrDefault(a=>a.Id==3);

                foreach (var item in a.Comments)
                {
                    Console.WriteLine(item.Id.ToString()+item.Message);
                }

                //由评论查询对应的Article 1对1的查询
                Comment cmt = dbContext.Comments.Include(c=>c.Article).FirstOrDefault(c=>c.Id==3);
                Console.WriteLine("------------由评论查询对应的Article 1对1的查询--------------");
                Console.WriteLine(cmt.Message);
                Console.WriteLine(cmt.Article.Id + cmt.Article.Message);

                //无和有外键的查询
                Console.WriteLine("---------------无外键的查询----------------");
                //只 new 了一个匿名类型 取id, ArticleId
                var cmt2 = dbContext.Comments.Select(c=> new { c.Id, c.ArticleId }).Single(c=>c.Id==3);
                Console.WriteLine(cmt2.Id + ""+cmt2.ArticleId);

                Console.WriteLine("---------------有外键的查询----------------");
                var cmt3 = dbContext.Comments.Single(c => c.Id == 3);
                Console.WriteLine(cmt2.Id + " " + cmt2.ArticleId);

                Console.WriteLine(cmt3);
                
            }
            //67节


        }
    }
}


结果:

info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.1.22 initialized 'MyDbContext' using provider 'Pomelo.EntityFrameworkCore.MySql' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (29ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT `t`.`Id`, `t`.`Message`, `t`.`Title`, `c`.`Id`, `c`.`ArticleId`, `c`.`Message`
      FROM (
          SELECT `a`.`Id`, `a`.`Message`, `a`.`Title`
          FROM `Aticle` AS `a`
          WHERE `a`.`Id` = 3
          LIMIT 1
      ) AS `t`
      LEFT JOIN `Comment` AS `c` ON `t`.`Id` = `c`.`ArticleId`
      ORDER BY `t`.`Id`, `c`.`Id`
7魔方大厦好看
8魔方大厦不好看
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT `c`.`Id`, `c`.`ArticleId`, `c`.`Message`, `a`.`Id`, `a`.`Message`, `a`.`Title`
      FROM `Comment` AS `c`
      INNER JOIN `Aticle` AS `a` ON `c`.`ArticleId` = `a`.`Id`
      WHERE `c`.`Id` = 3
      LIMIT 1
------------由评论查询对应的Article 1对1的查询--------------
三国演义好看
1三国演义的故事
---------------无外键的查询----------------
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT `c`.`Id`, `c`.`ArticleId`
      FROM `Comment` AS `c`
      WHERE `c`.`Id` = 3
      LIMIT 2
31
---------------有外键的查询----------------
3 1
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT `c`.`Id`, `c`.`ArticleId`, `c`.`Message`
      FROM `Comment` AS `c`
      WHERE `c`.`Id` = 3
      LIMIT 2
EFCoreOneToMany.Comment

在这里插入图片描述
在这里插入图片描述

webApi配置

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "DbContext": {
    "ConnectionString": "server=localhost; Database=FakeXiechengDb; User Id=sa; Password=sasa;",
    "MySQLConnectionString": "server=localhost; database=FakeXiechengDb; uid=root; pwd=123456;"
  }
}

(三)使用.NET Core3.1和EF Core构建RESTful API 在本文中,我将演示如何使用ASP.NET Core 3.1构建RESTful Web API,使用Entity Framework Core与现有数据库连接,创建JWT令牌提供对API访问的保护权限。如果您不熟悉.NET Core,可以先阅读我的.NET Core 3.1简介。 这篇文章的各节如下: 什么是RESTful API? 什么是JWT令牌? 添加控制器和脚手架构建RESTful API 使用Postman测试API接口 使用Cors解决前端调用API跨域的问题 创建一个JWT令牌保. 阅读详情

相关推荐

国标GB28181视频平台EasyGBS国标平台设备播放断流现象的问题解决方案

于是排查代码发现,当设备网络较差时,设备会断流,超过指定的时间30s(EasyGBS平台默认值),就会主动清除流媒体服务,但是redis中的流数据还在,而当设备在录像时,自动保活会从redis中取保活流数据,所以就会出现设备状态显示正在播放,但是流已经消失的情况。有用户反馈,在安防视频监控EasyGBS运行时,接入的设备刚开始可以正常播放,开启云端录像后,也没有停止和重播的操作,但是出现了视频流断流的现象。在设备进行播放保活时,对流信息进行判断,添加一个最后的处理流时间,如果超过指定时间就自动重新拉流。

EasyNTS的博客 434

NetCore3.1 +EF+Mysql 从数据库生成实体类到项目

Install-Package MySql.Data.EntityFrameworkCore -Pre Install-Package Pomelo.EntityFrameworkCore.MySql Install-Package Microsoft.EntityFrameworkCore.Tools Install-Package Microsoft.VisualStudio.Web.Code...

wqs15192095633的专栏 2541

【01、Go与VSCode的安装】

小白学Go语言

wangruil的博客 1536

.net core3.1 efcore DBFirst(生成实体类)

.net core3.1 efcore(生成实体类) 1.安装包 Install-Package MySql.Data.EntityFrameworkCore Install-Package Pomelo.EntityFrameworkCore.MySql Install-Package Microsoft.EntityFrameworkCore.Tools Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design 2.执行语...

andy5520的博客 5282

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1833

LAMMPS实操系列(四): 高熵合金FCC-CoCrCuFeNi的退火模拟

我们对FCC-CoCrCuFeNi的退火模拟思路主要是,首先将材料以均匀的速率用100 ps从300 K升温至1000 K,然后在1000 K的温度下平衡100 ps,随后以均匀的速率用100 ps从1000 K降温至300 K,随后通过共轭梯度下降法做静力学结构优化得到退火后的结构。由于FCC-CoCrCuFeNi高熵合金被认为是潜在的工程结构材料[1],接下来我们将对退火前后的结构进行压缩模拟,对比退火前后FCC-CoCrCuFeNi高熵合金的力学性能变化,敬请各位读者关注我们的更新。

Ceshigo_CD的博客 4837

.net core3.1使用ef core作为orm框架;ef core DBFirst;Sql Server

.net core3.1使用ef core作为orm框架;ef core DBFirst;Sql Server

Python_No1的博客 512

STM32CubeIDE开发环境搭建与GPIO控制实战

嵌入式开发中,MCU开发环境构建是软硬件协同的起点,其核心在于工具链选型、外设抽象层级与调试可靠性。HAL库作为ST官方标准硬件抽象层,通过统一接口屏蔽芯片差异,显著提升工程可移植性;而STM32CubeIDE则以图形化配置+自动生成代码的方式,实现‘配置即代码’的确定性开发范式。该组合在教学验证、原型迭代和中小规模量产中具备高性价比技术价值,广泛应用于智能传感、工业HMI及IoT终端等场景。本文聚焦STM32CubeIDE 1.15.0环境部署、MyST账户与固件包管理、ST-LINK驱动校验,以及基于H

weixin_33531560的博客 79

Net Core使用EF之DB First

一.新建一个.net core的MVC项目 新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖 二.使用Nuget添加EF的依赖 输入命令: Install-Package Microsoft.EntityFrameworkCore.SqlServer 安装成功后就可以在依赖项中看到 注意执行命令的项目你可能需要选择一下 三.如果是使用db first,需要根据数据库生成model,就还需要使用命令添加两个依赖 Install...

qq_18932003的博客 1123

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1190

ARFoundation系列讲解-教程目录

一、教程目录 ARFoundation快速入门-01简介 ARFoundation快速入门-02环境搭建 ARFoundation快速入门-03环境配置之iOS ARFoundation快速入门-04环境配置之Android ARFoundation快速入门-05ARKit设备支持列表 ARFoundation快速入门-06ARCore设备支持列表 ARFoundation快速入门-07检查设备支持 ARFoundation快速入门-08平面检..........

a451319296的博客 3万+

.NetCore + EF + Mysql DBFirst映射实体

引入Microsoft.EntityFrameworkCore.Tools +Pomelo.EntityFrameworkCore.MySql后 在程序包管理器控制台执行 Scaffold-DbContext “server=服务器地址;userid=登录名;pwd=密码;port=端口;database=数据名称;sslmode=none;” Pomelo.EntityFrameworkC...

ID_Dexter的博客 587

大模型LangChain面试题及参考答案(上)

明确的输入输出类型:函数参数需包含类型注解,返回值需定义清晰的数据结构(如JSON格式),便于LLM理解参数含义和调用方式。工具描述:通过文档字符串或独立的描述对象(如Tool类)说明函数的功能、参数用途及调用场景,供LLM判断是否需要调用。示例:定义一个计算两个数之和的工具函数@tool"""计算两个整数的和。参数:- a:第一个整数- b:第二个整数调用场景:当用户需要进行数值加法计算时使用。"""除了内置的。

大模型大数据攻城狮的专栏 1137

EF Core 一对多 关联查询

以上为例子,最主要 在 查询关联 数据时 要首先加入Include。

q8812345qaz的博客 909

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

EF Core一对多关系配置

一对多: HasOne(...).WithMany(...);多对多: HasMany (...).WithMany(...);3.在多的类配置文件中配置好// 我有一个文章 文章有多个评论。EF Core不仅支持单实体操作,更支持多实体的关系操作。1.先声明一的对象,并且在一的类中把多的list建好。复习:数据库表之间的关系:一对一、一对多、多对多。在一对多的关系中 在多的 建立指向一的外键关系。EF Core中实体之间关系的配置的套路。SaveChanges保存。2.在多的类中声明好父亲。

weixin_51327185的博客 874

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ASP.NET Core 3.1系列(17)——EFCore中的查询操作

在之前的时代,很多应用系统都会使用、、等类来实现数据库的操作,这种方法主要通过编写原生与数据库进行交互。而在中,微软则更推荐开发人员使用。虽然本质上仍是基于,但对于开发人员来说只需要使用的方式即可实现操作,因此从操作便捷性和开发效率上来说,无疑更具优势,下面就来介绍一些中关于查询的相关操作。在中新建一个数据库,创建作者表、书表,代码如下: 这里的与为一对多的关系,为表中的外键。表数据如下所示:表数据如下所示:使用引入组件,如下所示: 在控制台输入如下命令生成实体类与数据库上下文: 代码如下: 代码如下:

HerryDong的博客 5444

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

EF CORE Group by 及Sum的使用例子

//var headerTask = _coreDbContext.Set().Where(u => u.IsDisabeld == 0).Select(c => new //{ // c.UserKind, // c.UserCode // //其它属性 //}).GroupBy(c => c.UserKind, (k, g) => new

Jacob946的博客 1331

EF Core6教程【一DBFirst】

微软提供的一款ORM框架。工具使用 SQL Server Management Studio (SSMS): 官网链接 数据库备份链接: 官网链接以下这几个包都需要安装。 包引用如下: 链接字符串查询链接: [地址](https://www.connectionstrings.com/mysq链接: 官网 使用基架,在PMC中执行-> ->生成实体Model,此处有坑。 报错是因为主项目没有引用EFCore_DBLibrary,引用后再次执行即可,见下图。 也可以根据数据库中的模式,生成部分表的实体

weixin_42237537的博客 1395

.NET EF Core 使用 DBFrist 连接sql server

写一个api接口,依赖注入上下文类,Linq语句读取数据库表数据,返回JSON格式。在配置文件(appsettings.json)中写入连接字符串。DBFirst直接将数据库的连接字符串生成在了上下文类中。创建的是asp.net core webapi项目。在上下文类中,将生成的数据库连接字段注释掉。结果:运行成功并有数据返回。

WSTS666的博客 1449

asp.net core 系列 22 EF(连接字符串,连接复原,DbContext)

一.连接字符串   在上二篇中,ASP.NET Core 应用程序连接字符串是写死在ConfigureServices代码中,下面介绍通过配置来实现。连接字符串可以存储在appsettings.json、用户机密存储、其他配置源中。下面示例演示appsettings.json中存储的连接字符串,这样不管asp.net core在什么环境(Development、Staging 、Produ...

weixin_34138377的博客 1147

EFCore_一对一、一对多、多对多

关系配置在任意一端均可,实体对应的表中不存储外键(无需,也无法调用HasForeignKey()),外键存储在额外生成的中间表中,可通过UsingEntity("xxx")或UsingEntity(t=>t.ToTable("xxx"))来指定中间表名。以"教师"实体为例,其对应表为"Teacher"。答:通常单向导航属性出现在一对一 / 一对多的情况下(多对多的情况下外键储存在中间表),所以将关系配置在单向导航属性所在的实体类的配置类中,并将WithOne() / WithMany()置空即可。

Mudrock__的博客 1163

C# EF Core 一对一 一对多 多对多 连接查询

C# EF Core 一对一 一对多 多对多 连接查询

D13712787484的博客 3781

杨中科 EFCORE 第六部分 一对多关系配置

1、所谓“关系数据库”2、复习:数据库表之间的关系: 一对一、一对多、多对多。3、EF Core不仅支持单实体操作,更支持多实体的关系操作。4、三部曲:实体类中关系属性;FluentAPI关系配置;使用关系操作。

weixin_43847546的博客 1616

【已解决】c#后端webapi+efcore,1个接口实现一对多的增删改查。

c#webapi通过efcore,一个接口来实现一对多的增删改查。

2301_77557509的博客 919

示例:EntityFrameWorkCore 一对一、一对多和多对多模型的建立

一、目的:测试再EntityFrameWorkCore中如何建立一对一、一对多和多对多模型 二、环境:VS2019、.NetCore 2.2、Mysql 8.0、Win10 三、一对一模型的建立: 1、定义模型 示例:学生和桌子的一对一关系:每个学生需要对应一个桌位信息,桌位信息不用包含学生信息 public class Desk { publ...

HeBianGu的博客 5840
上一篇: 用Java 通过JDBC完成对Oracle数据的操作
下一篇: Halcon 图像增强练习
潘诺西亚的火山
博客等级 码龄10年 7415粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值