我想在创建或更改记录时将用户ID作为外键保存在其他表中。为此,我使用了InverseProperty。创建迁移时,我有一个问题,即外键创建不正确。在数据库中创建太多字段。
我正在使用ef core 3.0。
public class User { [Key] [Column("id")] public long Id { get; set; } [Column("usergroup_id")] public long UsergroupId { get; set; } public Usergroup Usergroup { get; set; } = null!; [Required] [Column("user_name")] public string? Username { get; set; } [Required] [Column("password")] public string? Password { get; set; } [Column("token")] public string? Token { get; set; } [Column("created_user_id")] public long? CreatedUserId { get; set; } public User? CreatedUser { get; set; } [Column("created")] public DateTime? Created { get; set; } [Column("updated_user_id")] public long? UpdatedUserId { get; set; } public User? UpdatedUser { get; set; } [Column("updated")] public DateTime? Updated { get; set; } [InverseProperty("CreatedUser")] public ICollection<User>? TblCreatedUser { get; } = null!; [InverseProperty("UpdatedUser")] public ICollection<User>? TblUpdatedUser { get; } = null!; } public class Usergroup { [Key] [Column("id")] public long Id { get; set; } [Required] [Column("name")] public string? Name { get; set; } [Column("created_user_id")] public long? CreatedUserId { get; set; } public User? CreatedUser { get; set; } = null!; [Column("created")] public DateTime? Created { get; set; } [Column("updated_user_id")] public long? UpdatedUserId { get; set; } public User? UpdatedUser { get; set; } = null!; [Column("updated")] public DateTime? Updated { get; set; } [InverseProperty("Usergroup")] public ICollection<User> User { get; } = null!; }
DBContext:
modelBuilder.Entity<Usergroup>(entity => { entity.HasKey(e => e.Id) .HasName("PK_tblUsergroup"); entity.HasIndex(e => e.Name) .HasName("UQ_tblUsergroup_UsergroupName") .IsUnique(); }); modelBuilder.Entity<User>(entity => { entity.HasKey(e => e.Id) .HasName("PK_tblUser"); entity.HasIndex(e => e.Username) .HasName("UQ_tblUser_Username") .IsUnique(); });
迁移:
tblUsergroup中的字段CreatedUserId1和UpdatedUserId1不应该存在。在其他表中是正确的。
migrationBuilder.CreateTable(
name: "tblUsergroup",
columns: table => new
{
id = table.Column<long>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
name = table.Column<string>(nullable: true),
created_user_id = table.Column<long>(nullable: true),
CreatedUserId1 = table.Column<long>(nullable: true),
created = table.Column<DateTime>(nullable: true),
updated_user_id = table.Column<long>(nullable: true),
UpdatedUserId1 = table.Column<long>(nullable: true),
updated = table.Column<DateTime>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_tblUsergroup", x => x.id);
});
migrationBuilder.CreateTable(
name: "tblUser",
columns: table => new
{
id = table.Column<long>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
usergroup_id = table.Column<long>(nullable: false),
user_name = table.Column<string>(nullable: true),
password = table.Column<string>(nullable: false),
token = table.Column<string>(nullable: true),
created_user_id = table.Column<long>(nullable: true),
created = table.Column<DateTime>(nullable: true),
updated_user_id = table.Column<long>(nullable: true),
updated = table.Column<DateTime>(nullable: true)
},
我想在创建或更改记录时将用户ID作为外键保存在其他表中。为此,我使用了InverseProperty。创建迁移时,我遇到的问题是外键是...