我想在创建或更改记录时将用户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",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),