1

У меня есть две сущности: USERPROFILE и ВходящиеУправление два соотношения между 2 субъектами

Это мой код для 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?

+0

Я не уверен, что вы подразумеваете под «управлением» здесь, но, глядя на ваше сопоставление, используя EF, когда вы добавляете новый объект входящей почты, например, вам нужно также установить свойства пользователя/отправителя и после установки объект objectState родительского входящего, который будет «добавлен», EF также добавит свойства навигации, которые будут добавлены, и это добавит 3 сущности в базу данных, 1 папку «Входящие» и 2 пользовательских профайла. этот сценарий действителен для вашего бизнеса? –

+0

@ omar.alani, нет, userId и senderId являются только FK для UserProfile, например, у нас есть userProfile с идентификатором '5', а другой с идентификатором '8', а в папке «Входящие» - 5, а senderid - 8 –

+0

yep, поэтому технически вы можете только установить SenderId/UserId, а входящие сообщения можно сохранить правильно, но мой предыдущий сценарий по-прежнему технически важен, а это означает, что вы все равно можете добавлять пользователей из объекта входящей почты, и если вы не хотите, чтобы это произошло, как вы можете настройте пользователей отдельно, никогда не подвергайте свойства Sender/User своим сервисом. –

ответ

0

Если у вас есть DTO, который вы открываете пользователю/ui для добавления почтового ящика, то dto не должен включать свойства User/Sender, просто Ids SenderId/UserId, но сохраняйте их в сущности Inbox, так как вам нужно загрузите некоторые детали о пользователе/​​отправителе из объекта входящей почты, поэтому вместо соединения с таблицей UserProfile вы можете включить его с помощью Entity-framework. надеюсь, это поможет.

Смежные вопросы