78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel.DataAnnotations;
 | 
						|
using Microsoft.EntityFrameworkCore;
 | 
						|
 | 
						|
namespace IRaCIS.Core.Test.CodeFirstTest.PGSQL.Migrations;
 | 
						|
 | 
						|
public abstract class BaseFullAuditEntity
 | 
						|
{
 | 
						|
    [Key]
 | 
						|
    public Guid Id { get; set; }
 | 
						|
    public Guid CreateUserId { get; set; }
 | 
						|
    public DateTime CreateTime { get; set; }
 | 
						|
    public Guid UpdateUserId { get; set; }
 | 
						|
    public DateTime UpdateTime { get; set; }
 | 
						|
}
 | 
						|
public class TestStr : BaseFullAuditEntity
 | 
						|
{
 | 
						|
    public string DefualtLength { get; set; }
 | 
						|
 | 
						|
    [MaxLength]
 | 
						|
    public string MaxLength { get; set; }
 | 
						|
 | 
						|
    [StringLength(400)]
 | 
						|
    public string DefineLength { get; set; }
 | 
						|
}
 | 
						|
 | 
						|
public partial class PGContext : DbContext
 | 
						|
{
 | 
						|
    public PGContext()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    public PGContext(DbContextOptions<PGContext> options)
 | 
						|
        : base(options)
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    public virtual DbSet<TestStr> TestStr { get; set; }
 | 
						|
 | 
						|
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 | 
						|
        => optionsBuilder.UseNpgsql("Host=106.14.89.110;Port=5432;Username=sa;Password=pgsql_pwd;Database=Test6_PG");
 | 
						|
 | 
						|
    protected override void OnModelCreating(ModelBuilder modelBuilder)
 | 
						|
    {
 | 
						|
 | 
						|
        if (base.Database.IsNpgsql())
 | 
						|
        {
 | 
						|
            modelBuilder.HasPostgresExtension("uuid-ossp");
 | 
						|
 | 
						|
            //保证pgsql 生成的时间默认为timestamp 而不是  timestamp with time zone
 | 
						|
            foreach (var entityType in modelBuilder.Model.GetEntityTypes())
 | 
						|
            {
 | 
						|
                foreach (var property in entityType.GetProperties())
 | 
						|
                {
 | 
						|
                    if (property.ClrType == typeof(DateTime) || property.ClrType == typeof(DateTime?))
 | 
						|
                    {
 | 
						|
                        property.SetColumnType("timestamp without time zone");
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
       
 | 
						|
 | 
						|
        OnModelCreatingPartial(modelBuilder);
 | 
						|
    }
 | 
						|
    protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
 | 
						|
    {
 | 
						|
 | 
						|
        //configurationBuilder.Conventions.Add(_ => new NoForeignKeyConvention());
 | 
						|
        //针对字符串使用默认的长度配置
 | 
						|
        configurationBuilder.Conventions.Add(_ => new MaxStringLengthConvention(200));
 | 
						|
    }
 | 
						|
 | 
						|
    partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
 | 
						|
}
 |