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

时间:2014-10-17 16:20:11

标签: c# entity-framework asp.net-mvc-4 entity-framework-6 ef-fluent-api

我有两个实体: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之间的这两种关系?

1 个答案:

答案 0 :(得分:0)

如果您有向用户/ ui公开的DTO以添加收件箱,则dto不应包含用户/发件人属性,只包括Ids SenderId / UserId,但要将它们保留在收件箱实体中,因为您需要加载有关收件箱实体中的用户/发件人的一些详细信息,因此您可以使用Entity-framework将其包含在内,而不是加入UserProfile表。希望有所帮助。