首页 > 数据库 >.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移、属性导航

.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移、属性导航

时间:2024-03-05 23:14:55浏览次数:25  
标签:Core set string get builder EF EFCore app public

一、创建 asp.net core web(MVC)项目

二、导包

  1. Microsoft.EntityFrameworkCore.Design
  2. Microsoft.EntifyFrameworkCore.Tools
  3. Pomelo.EntityFrameworkCore.MySql

三、创建实例

这里创建了两个实例

namespace demo.Models
{
    public class Supplier
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]//自增
        public long SupplierId { get; set; }
        public string SupplierName { get; set; }
        public string Abbreviation { get; set; }
        public List<SupplierType> SupplierTypes { get; set; } = new List<SupplierType>();
        public string province { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
        public string Note { get; set; }
        public bool IsActive { get; set; }
    }
}
namespace demo.Models
{
    public class SupplierType
    {
        [Key]
        public int TypeCode { get; set; }
        public string TypeName { get; set; }
        public Supplier Supplier { get; set; }
    }
}

四、为实体类创建配置

namespace demo.Data
{
    public class SupplierConfig : IEntityTypeConfiguration<Supplier>
    {

        public void Configure(EntityTypeBuilder<Supplier> builder)
        {
            builder.ToTable("T_Supplier");
            builder.Property(a => a.SupplierId).IsRequired();//不能为空
            builder.Property(a => a.SupplierName).IsRequired();
            builder.Property(a => a.SupplierTypes).IsRequired();
        }
    }
namespace demo.Data
{
    public class SupplierTypeConfig : IEntityTypeConfiguration<SupplierType>
    {
        public void Configure(EntityTypeBuilder<SupplierType> builder)
        {
            builder.ToTable("SupplierType");
            builder.HasOne<Supplier>(c => c.Supplier).WithMany(a => a.SupplierTypes);//属性导航
        }
    }
}

五、创建数据上下文类

创建MyDbContext.cs 继承DbContext

MyDbContext
 namespace demo.Data
{
    public class MyDbContext:DbContext
    {
        //添加实体类
        public DbSet<Supplier> suppliers{ get; set; }
        public DbSet<SupplierType> supplierTypes { get; set; }
        //构造函数
        public MyDbContext(DbContextOptions<MyDbContext> option) : base(option) { }
    }
}

六、连接MySql配置

  1. 查询mysql版本
  2. 配置appsettings.json
    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*",
       
      "ConnectionStrings": {
        "DefaultConnection": "server=localhost;port=3306;uid=root;pwd=123456;database=demo1"// demo1创建的数据库名
      }
    }
  3.  配置Program.cs
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
    
            // Add services to the container.
            builder.Services.AddControllersWithViews();
            //配置这段代码
            builder.Services.AddDbContext<MyDbContext>(options =>
           {
                options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"), 
                new MySqlServerVersion(new Version(5, 7, 26)));
    
           });//5 7 26为数据库版本,DefaultConnection 对应json配置的名
    
            var app = builder.Build();//一定要在 var app = builder.Build();上面配置,否则不会构建
    
            // Configure the HTTP request pipeline.
            if (!app.Environment.IsDevelopment())
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();
            app.UseAuthorization();
            app.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            app.Run();      
        }
    }

 

迁移

Add-Migration init

Update-Database

 

 

标签:Core,set,string,get,builder,EF,EFCore,app,public
From: https://www.cnblogs.com/nihaozaijian/p/18055503

相关文章

  • [GIT] 解决Git中fatal: refusing to merge unrelated histories
    1问题背景在本地gitcommit后,准备在gitpush之前做一次gitpull,结果报:$gitpullfatal:refusingtomergeunrelatedhistories2问题分析根本原因:你可能会在gitpull或者gitpush中都有可能会遇到,这是因为两个分支没有取得关系。3解决方法那么怎么解决呢?......
  • Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一、Object.defineProperty定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象为什么能实现响应式通过defineProperty 两个属性,get及setget属性......
  • 前端学习-vue视频学习006-watch监视、watchEffect
    尚硅谷视频链接watch监视的5种情况情况1监视【ref】定义的【基本类型】数据<template><divclass="person"><h1>情况1:监视【ref】定义的【基本类型】数据</h1><h2>求和:{{sum}}</h2><button@click="changeSum">sum+1<......
  • java.lang.reflect.InaccessibleObjectException
    低版本springboot应用使用高版本JDK报以下异常:Causedby:java.lang.reflect.InaccessibleObjectException:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)throwsjava......
  • 开源:Taurus.Idempotent 分布式幂等性锁框架,支持 .Net 和 .Net Core 双系列版本
    分布式幂等性锁介绍:分布式幂等性框架的作用是确保在分布式系统中的操作具有幂等性,即无论操作被重复执行多少次,最终的结果都是一致的。幂等性是指对同一操作的多次执行所产生的效果与仅执行一次的效果相同。以下是分布式幂等性框架的主要作用:避免重复操作:在分布式系统中,由于......
  • Proxy 的 性 能 可 能 比 defineProperty 更 差
    老有人跑来跟我说Proxy和defineProperty相比,是性能的巨大提升。我一听,这不对劲啊,跟我学的知识不太一样,我明明记得Proxy性能比defineProperty更差。所以我就写了几个简单的例子来验证一下。这个例子的逻辑非常简单,我们在大数据量循环的过程中,分别用 Object.definePropert......
  • Codeforces Round 930 (Div. 1)
    Preface虽然难得有Div1的CF,但由于在周四晚上学校要断电就没打这两天有空去补了下发现好像错过了最适合我的一场,AB都是一眼题,C是经典图论建模,D是DS典题没有Counting我直接爽飞,不过估计现场打的话写个ABC差不多了,D的码量还是挺大的A.BitwiseOperationWizard很有意思的一个......
  • .Net Core(七) 管道和中间件
    简介管道.NETCore中的管道是一个用于处理HTTP请求的组件。它是ASP.NETCore应用程序的核心部分,负责将传入的HTTP请求传递给适当的处理程序并生成响应。管道由一系列中间件组成,每个中间件都可以对请求或响应进行操作,然后将其传递给下一个中间件或终止请求处理。中间件......
  • 【HMS Core】集成推送服务,打包后应用名乱码
    ​【问题描述】使用flutter进行移动端开发,导入了agconnect-services.json之后,成功集成了华为推送,但是应用打包如果应用名为中文,debug包生成的应用名会是乱码。​​ 【问题分析】1、经推测可能是agc插件与开发者引入的另外的sdk相冲突导致的,但即使去掉其他的sdk也会导致该问......
  • (19)Lazarus学习之TreeFilterEdit1过滤TreeView1数据
    与(18)Lazarus学习ListViewFilterEdit1过滤ListView1数据 类似1]界面上添加一个TreeView1,双击添加好树结点 2]拖一个TreeFilterEdit1到界面上,设置它的FilteredTreeview 可以设置是不是大小写敏感   最好设置它的Text为空,这样一开始就可以看到所有树结点 pro......