codefirst 测试完毕
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-09-18 14:51:20 +08:00
parent 5b2b5fead9
commit a64cec987d
20 changed files with 354 additions and 886 deletions

View File

@ -1,16 +1,25 @@
# 程序包管理控制台使用方式
1、生成迁移文件(add-migration init -Project IRaCIS.Core.Infra.EFCore )
add-migration init
add-migration init
Remove-Migration
2、移除生成的迁移文件
Remove-Migration
3、以下命令将数据库更新为最新迁移
Update-Database
4、以下命令将数据库更新为给定迁移
Update-Database xxxName
5、以下命令将生成一个从指定 from 迁移到指定 to 迁移的 SQL 脚本。
Script-Migration from to
@ -20,8 +29,20 @@ Remove-Migration
1、生成迁移文件 dotnet ef migrations add Initial -s IRaCIS.Core.API -p IRaCIS.Core.Infra.EFCore -c IRaCISDBContext -o CodeFirst_MSSQL/Migrations
dotnet ef migrations add Initial -p IRaCIS.Core.Infra.EFCore
dotnet ef migrations add Initial -p IRaCIS.Core.Infra.EFCore
2、撤销生成的迁移文件
dotnet ef migrations remove -p IRaCIS.Core.Infra.EFCore
dotnet ef migrations remove -p IRaCIS.Core.Infra.EFCore
3、将迁移文件更新到数据库
dotnet ef database update -p IRaCIS.Core.Infra.EFCore
4、以下命令将数据库更新为给定迁移
dotnet ef database update xxxName -p IRaCIS.Core.Infra.EFCore
5、以下命令将生成一个从指定 from 迁移到指定 to 迁移的 SQL 脚本。
dotnet ef migrations script from to -p IRaCIS.Core.Infra.EFCore

View File

@ -1,6 +1,7 @@
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Migrations.Operations;
using Microsoft.EntityFrameworkCore.Update;
namespace IRaCIS.Core.Infra.EFCore;
@ -8,10 +9,12 @@ namespace IRaCIS.Core.Infra.EFCore;
/// <summary>
/// 迁移的时候忽略显示外键的建立增加灵活性同时为了兼容之前dbfirst 一个字段关联多个表
/// </summary>
public class NoForeignKeyMigrationsSqlGenerator : MigrationsSqlGenerator
public class NoForeignKeyMigrationsSqlGenerator : SqlServerMigrationsSqlGenerator
{
public NoForeignKeyMigrationsSqlGenerator(
MigrationsSqlGeneratorDependencies dependencies) : base(dependencies)
public NoForeignKeyMigrationsSqlGenerator(MigrationsSqlGeneratorDependencies dependencies, ICommandBatchPreparer commandBatchPreparer)
: base(dependencies, commandBatchPreparer)
{
}
@ -20,4 +23,9 @@ public class NoForeignKeyMigrationsSqlGenerator : MigrationsSqlGenerator
operation.ForeignKeys.Clear();
base.Generate(operation, model, builder, terminate);
}
protected override void Generate(AddForeignKeyOperation operation, IModel? model, MigrationCommandListBuilder builder, bool terminate = true)
{
}
}

View File

@ -1,5 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>

View File

@ -3,31 +3,33 @@
https://www.cnblogs.com/cqpanda/p/16815263.html
# dotnet ef migrations add 本地迁移名字 -p 项目名 -c 数据库上下文名 -o 迁移文件生成目录
# 使用dotnet 命令迁移(dotnet ef dbcontext list -p IRaCIS.Core.Infra.EFCore )
1、生成迁移文件
dotnet ef migrations add Initial -p IRaCIS.Core.Test -c IRCContext -o CodeFirstTest/MSSQL/Migrations
# dotnet ef migrations add 本地迁移名字 -p 项目名 -c 数据库上下文名 -o 迁移文件生成目录
2、撤销刚才生成的迁移文件未更新到数据库的
dotnet ef migrations remove -p IRaCIS.Core.Test -c IRCContext
1、生成迁移文件 dotnet ef migrations add xxx -s IRaCIS.Core.API -p IRaCIS.Core.Infra.EFCore -c IRaCISDBContext -o CodeFirst_MSSQL/Migrations
3、将迁移文件更新到数据库
dotnet ef database update -p IRaCIS.Core.Test -c IRCContext
dotnet ef migrations add xxx -p IRaCIS.Core.Test -c IRCContext
4、查看已有迁移
dotnet ef migrations list -p IRaCIS.Core.Test -c IRCContext
2、撤销生成的迁移文件
5、撤销某次更新到数据库的迁移自动执行down 方法)
dotnet ef database update 某次迁移的前一次迁移名称 -p IRaCIS.Core.Test -c IRCContext
dotnet ef migrations remove -p IRaCIS.Core.Test -c IRCContext
dotnet ef database update TestName -p IRaCIS.Core.Test -c IRCContext
3、将迁移文件更新到数据库
dotnet ef database update -p IRaCIS.Core.Test -c IRCContext
4、以下命令将数据库更新为给定迁移
dotnet ef database update xxxName -p IRaCIS.Core.Test -c IRCContext
5、以下命令将生成一个从指定 from 迁移到指定 to 迁移的 SQL 脚本。
dotnet ef migrations script from to -p IRaCIS.Core.Test -c IRCContext
PGSQL :
dotnet ef migrations add testSTR -p IRaCIS.Core.Test -c PGContext -o CodeFirstTest/PGSQL/Migrations
PGSQL 指定
dotnet ef migrations add testSTR -p IRaCIS.Core.Test -c PGContext -o CodeFirstTest/PGSQL/Migrations
dotnet ef migrations remove -p IRaCIS.Core.Test -c PGContext
dotnet ef migrations remove -p IRaCIS.Core.Test -c PGContext

View File

@ -0,0 +1,42 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Test;
/// <summary>
/// 设置decimal 默认精度问题 但是用ef迁移工具的时候还是会提示No store type was specified for the decimal property但是迁移文件里面体现了该配置在dbcontext里写那么就会没该警告
/// </summary>
public class DecimalPrecisionConvention : IModelFinalizingConvention
{
private readonly int _precision;
private readonly int _scale;
public DecimalPrecisionConvention(int precision, int scale)
{
_precision = precision;
_scale = scale;
}
public void ProcessModelFinalizing(IConventionModelBuilder modelBuilder, IConventionContext<IConventionModelBuilder> context)
{
foreach (var property in modelBuilder.Metadata.GetEntityTypes()
.SelectMany(
entityType => entityType.GetDeclaredProperties()
.Where(
property => property.ClrType == typeof(decimal) || property.ClrType == typeof(decimal?))))
{
// 设置精度和小数位数
property.SetPrecision(_precision);
property.SetScale(_scale);
}
}
}

View File

@ -1,13 +1,16 @@
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Migrations.Operations;
using Microsoft.EntityFrameworkCore.Update;
namespace IRaCIS.Core.Test
{
public class NoForeignKeyMigrationsSqlGenerator : MigrationsSqlGenerator
public class NoForeignKeyMigrationsSqlGenerator : SqlServerMigrationsSqlGenerator
{
public NoForeignKeyMigrationsSqlGenerator(
MigrationsSqlGeneratorDependencies dependencies) : base(dependencies)
public NoForeignKeyMigrationsSqlGenerator(MigrationsSqlGeneratorDependencies dependencies, ICommandBatchPreparer commandBatchPreparer)
: base(dependencies, commandBatchPreparer)
{
}
@ -18,7 +21,7 @@ namespace IRaCIS.Core.Test
}
protected override void Generate(AddForeignKeyOperation operation, IModel? model, MigrationCommandListBuilder builder, bool terminate = true)
{
return;
}
}

View File

@ -34,10 +34,13 @@ public partial class IRCContext : DbContext
public virtual DbSet<ProjectUser> ProjectUser { get; set; }
public virtual DbSet<ProjectUser2> ProjectUser2 { get; set; }
public virtual DbSet<TestFieldName> TestFieldName { get; set; }
//public virtual DbSet<TestFieldName> TestFieldName { get; set; }
public virtual DbSet<TestComment> TestComment { get; set; }
//public virtual DbSet<TestComment> TestComment { get; set; }
//public virtual DbSet<TestStrDefaultValue> TestStrDefaultValue { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// 替换默认的 MigrationsSqlGenerator

View File

@ -1,28 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class TestNameChange : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "Name",
table: "ProjectUser",
newName: "Name2");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "Name2",
table: "ProjectUser",
newName: "Name");
}
}
}

View File

@ -1,254 +0,0 @@
// <auto-generated />
using System;
using IRaCIS.Core.Test.CodeFirstTest.MSSQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
[DbContext(typeof(IRCContext))]
[Migration("20240918010002_Comment")]
partial class Comment
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.8")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("Project");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("ProjectUser");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser2", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestComment", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("这是字段备注Code");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("这是字段备注Name");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestComment", t =>
{
t.HasComment("这是类备注");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestFieldName", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NAME1")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("NAme2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("naMe3")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestFieldName");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("DefineLength")
.IsRequired()
.HasMaxLength(400)
.HasColumnType("nvarchar(400)");
b.Property<string>("DefualtLength")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("MaxLength")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestStr");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>
{
b.HasOne("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser2", b =>
{
b.HasOne("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,40 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class Comment : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TestComment",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Code = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false, comment: "这是字段备注Code"),
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false, comment: "这是字段备注Name"),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TestComment", x => x.Id);
},
comment: "这是类备注");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TestComment");
}
}
}

View File

@ -1,253 +0,0 @@
// <auto-generated />
using System;
using IRaCIS.Core.Test.CodeFirstTest.MSSQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
[DbContext(typeof(IRCContext))]
[Migration("20240918010449_CommentModify")]
partial class CommentModify
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.8")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("Project");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("ProjectUser");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser2", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestComment", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("这是字段备注Name的修改");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestComment", t =>
{
t.HasComment("这是类备注的修改");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestFieldName", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NAME1")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("NAme2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("naMe3")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestFieldName");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("DefineLength")
.IsRequired()
.HasMaxLength(400)
.HasColumnType("nvarchar(400)");
b.Property<string>("DefualtLength")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("MaxLength")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestStr");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>
{
b.HasOne("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser2", b =>
{
b.HasOne("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,74 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class CommentModify : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterTable(
name: "TestComment",
comment: "这是类备注的修改",
oldComment: "这是类备注");
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "TestComment",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
comment: "这是字段备注Name的修改",
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200,
oldComment: "这是字段备注Name");
migrationBuilder.AlterColumn<string>(
name: "Code",
table: "TestComment",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200,
oldComment: "这是字段备注Code");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterTable(
name: "TestComment",
comment: "这是类备注",
oldComment: "这是类备注的修改");
migrationBuilder.AlterColumn<string>(
name: "Name",
table: "TestComment",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
comment: "这是字段备注Name",
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200,
oldComment: "这是字段备注Name的修改");
migrationBuilder.AlterColumn<string>(
name: "Code",
table: "TestComment",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
comment: "这是字段备注Code",
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200);
}
}
}

View File

@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
[DbContext(typeof(IRCContext))]
[Migration("20240917145100_TestNameChange")]
partial class TestNameChange
[Migration("20240918042003_addField")]
partial class addField
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -98,6 +98,11 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NewCreateName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
@ -114,44 +119,6 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestFieldName", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NAME1")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("NAme2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("naMe3")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestFieldName");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")

View File

@ -6,28 +6,34 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class TestName : Migration
public partial class addField : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TestFieldName",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
NAME1 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
NAme2 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
naMe3 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TestFieldName", x => x.Id);
});
migrationBuilder.AddColumn<string>(
name: "NewCreateName",
table: "ProjectUser2",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Code",
table: "ProjectUser",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Name2",
table: "ProjectUser",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
defaultValue: "");
migrationBuilder.CreateTable(
name: "TestStr",
@ -51,11 +57,20 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TestFieldName");
migrationBuilder.DropTable(
name: "TestStr");
migrationBuilder.DropColumn(
name: "NewCreateName",
table: "ProjectUser2");
migrationBuilder.DropColumn(
name: "Code",
table: "ProjectUser");
migrationBuilder.DropColumn(
name: "Name2",
table: "ProjectUser");
}
}
}

View File

@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
[DbContext(typeof(IRCContext))]
[Migration("20240912072724_addField")]
partial class addField
[Migration("20240918042206_addComment")]
partial class addComment
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -98,6 +98,12 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NewCreateName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("NewCreateName");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
@ -114,6 +120,46 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("DefineLength")
.IsRequired()
.HasMaxLength(400)
.HasColumnType("nvarchar(400)");
b.Property<string>("DefualtLength")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("MaxLength")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestStr", t =>
{
t.HasComment("test commment");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>
{
b.HasOne("IRaCIS.Core.Test.CodeFirstTest.MSSQL.Project", "Project")

View File

@ -0,0 +1,58 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class addComment : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "Name2",
table: "ProjectUser",
newName: "Name");
migrationBuilder.AlterTable(
name: "TestStr",
comment: "test commment");
migrationBuilder.AlterColumn<string>(
name: "NewCreateName",
table: "ProjectUser2",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
comment: "NewCreateName",
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "Name",
table: "ProjectUser",
newName: "Name2");
migrationBuilder.AlterTable(
name: "TestStr",
oldComment: "test commment");
migrationBuilder.AlterColumn<string>(
name: "NewCreateName",
table: "ProjectUser2",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
oldClrType: typeof(string),
oldType: "nvarchar(200)",
oldMaxLength: 200,
oldComment: "NewCreateName");
}
}
}

View File

@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
[DbContext(typeof(IRCContext))]
[Migration("20240917144649_TestName")]
partial class TestName
[Migration("20240918042443_addField2")]
partial class addField2
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -98,6 +98,12 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NewCreateName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("NewCreateName");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
@ -114,44 +120,6 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestFieldName", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NAME1")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("NAme2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("naMe3")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestFieldName");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")
@ -184,9 +152,17 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("UserAddField")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestStr");
b.ToTable("TestStr", t =>
{
t.HasComment("test commment");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>

View File

@ -5,22 +5,14 @@
namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
{
/// <inheritdoc />
public partial class addField : Migration
public partial class addField2 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Code",
table: "ProjectUser",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Name",
table: "ProjectUser",
name: "UserAddField",
table: "TestStr",
type: "nvarchar(200)",
maxLength: 200,
nullable: false,
@ -31,12 +23,8 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Code",
table: "ProjectUser");
migrationBuilder.DropColumn(
name: "Name",
table: "ProjectUser");
name: "UserAddField",
table: "TestStr");
}
}
}

View File

@ -62,7 +62,7 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name2")
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
@ -95,6 +95,12 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NewCreateName")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("NewCreateName");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
@ -111,81 +117,6 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.ToTable("ProjectUser2");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestComment", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)")
.HasComment("这是字段备注Name的修改");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
b.ToTable("TestComment", t =>
{
t.HasComment("这是类备注的修改");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestFieldName", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreateTime")
.HasColumnType("datetime2");
b.Property<Guid>("CreateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("NAME1")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("NAme2")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<DateTime>("UpdateTime")
.HasColumnType("datetime2");
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("naMe3")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestFieldName");
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.TestStr", b =>
{
b.Property<Guid>("Id")
@ -218,9 +149,17 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL.Migrations
b.Property<Guid>("UpdateUserId")
.HasColumnType("uniqueidentifier");
b.Property<string>("UserAddField")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.HasKey("Id");
b.ToTable("TestStr");
b.ToTable("TestStr", t =>
{
t.HasComment("test commment");
});
});
modelBuilder.Entity("IRaCIS.Core.Test.CodeFirstTest.MSSQL.ProjectUser", b =>

View File

@ -158,13 +158,10 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL
public class ProjectUser : BaseFullAuditEntity
{
//public string Name2 { get; set; }
//public string OtherName { get; set; }
public string Code { get; set; }
public string Name2 { get; set; }
public string Name { get; set; }
//外键
public Guid ProjectId { get; set; }
@ -178,20 +175,53 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL
public Guid ProjectId { get; set; }
public Project Project { get; set; }
[Comment("NewCreateName")]
public string NewCreateName { get; set; }
}
#endregion
#region 测试字符串长度
[Comment("test commment4")]
public class TestStr: BaseFullAuditEntity
{
[Comment("test commment3")]
public string DefualtLength { get; set; }
[Comment("test commment1")]
[MaxLength]
public string MaxLength { get; set; }
[Comment("test commment2")]
[StringLength(400)]
public string DefineLength { get; set;}
}
/// <summary>
/// 备注
/// </summary>
public class TestStr2
{
/// <summary>
/// 备注1
/// </summary>
[StringLength(200)]
public string DefualtLength { get; set; }
/// <summary>
/// 备注1
/// </summary>
[MaxLength]
public string MaxLength { get; set; }
/// <summary>
/// 备注3
/// </summary>
[StringLength(400)]
public string DefineLength { get; set; }
}
#endregion
@ -220,4 +250,21 @@ namespace IRaCIS.Core.Test.CodeFirstTest.MSSQL
public string Name { get; set; }
}
#endregion
#region 测试默认值约束
public class TestStrDefaultValue : BaseFullAuditEntity
{
//手动不给默认值
public string Value1 { get; set; }
//手动给默认值
public string Value2 { get; set; } = string.Empty;
//dbfirst 默认生成方式 项目开启了<Nullable>enable</Nullable>
public string Value3 { get; set; } = null!;
}
#endregion
}