管理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);
}
}
如何管理Inbox
和UserProfile
之间的这两种关系?
如果您有一个DTO,您向用户/ui公开该DTO以添加收件箱,则该DTO不应包括user/Sender属性,只应包括Ids SenderId/UserId,而应将它们保留在收件箱实体中,因为您需要从收件箱实体加载有关user/SeSender的一些详细信息,因此您可以使用entity框架来包含它,而不是加入UserProfile表。希望能有所帮助。