簡體   English   中英

EF Core無法一對多保存相關數據

[英]EF Core Cannot Save Related Data one to many

我試圖用新角色將新用戶保存到用戶表中。 這是模型和配置。

當我插入以下實體時,角色表將填充新角色,但未插入用戶實體。

    `var userEntity = new User
    {
        Id = 0,
        Active = true,
        Firstname = "Fname",
        Lastname = "Lname",
        Password = "test",
        Phonenumber = "2223334444",
        Test = false,
        Username = "test@test.com",
        RoleId = 0
        //                Role = roleEntity
    };
    var roleEntity = new Role
    {
        Id = 0,
        Name = "test role",
        Active = true,
        Users = new List<User>
        {
            userEntity
        }
    };

    context.Role.Add(roleEntity);
    await context.SaveChangesAsync();

public class User
{
    public int Id { get; set; }

    public string Username { get; set; }

    public string Password { get; set; }

    public string Firstname { get; set; }

    public string Middlename { get; set; }

    public string Lastname { get; set; }

    public string Phonenumber { get; set; }

    public bool Active { get; set; }

    public bool Test { get; set; }

    public int RoleId { get; set; }


    public virtual Role Role { get; set; }
}

public class Role
{
    public int Id { get; set; }

    public string Name { get; set; }

    public bool Active { get; set; }

    public virtual ICollection<User> Users { get; set; }

    public Role()
    {
        Users = new HashSet<User>();
    }
}`

這是實體配置。

`

 public class RoleConfiguration : IEntityTypeConfiguration<Role>
 {
    public void Configure(EntityTypeBuilder<Role> builder)
    {
        builder.ToTable("Role");

        builder.HasKey(r => r.Id);
        builder.Property(r => r.Id).IsRequired().ValueGeneratedOnAdd();
        builder.Property(r => r.Name).IsRequired().HasMaxLength(255);
        builder.Property(r => r.Active).IsRequired();
        builder.HasMany(r => r.Users)
            .WithOne(u => u.Role)
            .HasForeignKey(u => u.RoleId)
            .OnDelete(DeleteBehavior.Restrict);

    }
}

    public void Configure(EntityTypeBuilder<User> builder)
    {
        builder.ToTable("User");

        builder.HasKey(u => u.Id);
        builder.Property(u => u.Id).IsRequired().ValueGeneratedOnAdd();
        builder.Property(u => u.Username).IsRequired().HasMaxLength(255);
        builder.Property(u => u.Password).IsRequired();
        builder.Property(u => u.Firstname).IsRequired().HasMaxLength(255);
        builder.Property(u => u.Lastname).IsRequired().HasMaxLength(255);
        builder.Property(u => u.Phonenumber).HasMaxLength(255);
        builder.Property(u => u.Active).IsRequired();
        builder.Property(u => u.Test).IsRequired();
        builder.Property(u => u.RoleId).IsRequired();

        builder.HasOne(u => u.Role)
            .WithMany(r => r.Users)
            .HasForeignKey(u => u.RoleId)
            .OnDelete(DeleteBehavior.Restrict);
    }
}`

我做錯了什么嗎?

謝謝你的幫助。

我使用了一個錯誤

context.Entry(entity).State = EntityState.Added;

代替

context.Add(entity);

這就是為什么未添加相關實體的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM