管理2个实体之间的两个关系

本文关键字:两个 关系 2个 实体 之间 管理 | 更新日期: 2023-09-27 18:26:51

我有两个实体:UserProfile和Inbox

这是我的UserProfile:代码

public partial class UserProfile {
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    //--------------------------
    public virtual ICollection<Messages.Inbox> Inboxes { get; set; }
}
public partial class UserProfile {
    public static void Configure(DbModelBuilder mb) {
        mb.Entity<UserProfile>().HasKey(up => up.Id);
    }
}

这是我的Inbox:代码

public partial class Inbox {
    public int Id { get; set; }
    public int UserId { get; set; }//FK to userProfile
    public Accounts.UserProfile User { get; set; }
    public DateTime MessageDateTime { get; set; }
    public string Context { get; set; }
    public int SenderId { get; set; }//FK to userProfile
    public Accounts.UserProfile Sender { get; set; }
}
public partial class Inbox {
    public static void Configure(DbModelBuilder mb) {
        mb.Entity<Inbox>().HasKey(up => up.Id);
        mb.Entity<Accounts.UserProfile>().HasMany(up => up.Inboxes)
            .WithRequired(p => p.User)
            .HasForeignKey(p => p.UserId);
        mb.Entity<Accounts.UserProfile>().HasMany(up => up.Inboxes)
            .WithRequired(p => p.Sender)
            .HasForeignKey(p => p.SenderId);
    }
}

如何管理InboxUserProfile之间的这两种关系?

管理2个实体之间的两个关系

如果您有一个DTO,您向用户/ui公开该DTO以添加收件箱,则该DTO不应包括user/Sender属性,只应包括Ids SenderId/UserId,而应将它们保留在收件箱实体中,因为您需要从收件箱实体加载有关user/SeSender的一些详细信息,因此您可以使用entity框架来包含它,而不是加入UserProfile表。希望能有所帮助。