You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
1.4 KiB

using Microsoft.EntityFrameworkCore;
namespace CockRoachDBEFCoreTest
{
public class MyDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//数据库名只能为小写,否则报错为:database "postgres" does not exist
var connStr = "User ID=root;Host=localhost;Port=26257;Database=testdb;CommandTimeout=120;";
optionsBuilder.UseNpgsql(connStr);
//var connStr = "User ID=root;Host=localhost;Port=26257;Database=mytest;CommandTimeout=120;SslMode=Require;TrustServerCertificate=true;";
//optionsBuilder.UseNpgsql(connStr,o => o.ProvideClientCertificatesCallback(o => o.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2("client.root.pk12"))));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>();
modelBuilder.Entity<User>().HasIndex(o => o.Name).IsUnique();
modelBuilder.Entity<Role>();
modelBuilder.Entity<UserRole>().HasOne(o => o.User).WithMany(o => o.UserRoles).HasForeignKey(o => o.UserId).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<UserRole>().HasOne(o => o.Role).WithMany(o => o.UserRoles).HasForeignKey(o => o.RoleId).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<UserRole>().HasIndex(o => new { o.UserId, o.RoleId }).IsUnique();
}
}
}