2016-10-16 1 views
2

Que ce soit possible: c'est un Messenger où l'entité Contenu de l'utilisateur ICollection Utilisateur qui regroupe des Amis se compose des mêmes Utilisateurs? Si cela est possible s'il vous plaît dites-moi comment créer une relation correcte entre eux dans le fichier DbContext? Ou comment mieux construire cette relation. Peut être créer une entité séparée? Merci d'avance!add ICollection Utilisateur dans la même entité Utilisateur

namespace Tinkl.Data.Core.Domain 
{ 
    public class User 
    { 
     public User() 
     { 
      Contacts = new List<User>(); 
      Conversations = new List<Conversation>(); 
      Invites = new List<User>(); 
     } 

     public int UserId { get; set; } 
     public string NickName { get; set; } 
     public string EMail { get; set; } 
     public string Password { get; set; } 
     public DateTime? CreationDate { get; set; } 
     public DateTime? ExitDate { get; set; } 
     public string Picture { get; set; } 
     public string Status { get; set; } 
     public virtual ICollection<User> Invites { get; set; } 
     public virtual ICollection<User> Contacts { get; set; } 
     public virtual ICollection<Conversation> Conversations { get; set; } 
    } 
} 
+0

le problème: createв une seule collection commune pour tous les utilisateurs –

Répondre

1

Vous allez dans la bonne direction, voir mon code ci-dessous même type de rapport à soi dans le code EF premier

public class ContentEntityRef : BaseModel 
{ 
    public ContentEntityRef() 
    { 
     RoleRefs = new HashSet<RoleRef>(); 
    } 

    public int EntityId { get; set; } 

    public string EntityName { get; set; } 

    public int? ParentEntityId { get; set; } 

    public virtual ICollection<RoleRef> RoleRefs { get; set; } 

    public virtual ContentEntityRef Parent { get; set; } 

    public virtual ICollection<ContentEntityRef> Children { get; set; } 
} 

j'avais créé le fichier de configuration seprate, vous pouvez même utiliser dans dbContext « OnModelCreating " méthode.

internal class ContentEntityRefConfiguration : EntityTypeConfiguration<ContentEntityRef>, IEntityConfiguration 
{ 
    public ContentEntityRefConfiguration() 
    { 
     this.HasKey(x => x.EntityId).Property(t => t.EntityId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
     this.Property(x => x.EntityName).IsRequired().HasMaxLength(50); 

     this.HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentEntityId); 

     this.HasMany<RoleRef>(role => role.RoleRefs) 
      .WithMany(content => content.ContentEntities) 
      .Map(contentRole => 
      { 
       contentRole.MapLeftKey("EntityID"); 
       contentRole.MapRightKey("RoleID"); 
       contentRole.ToTable("RoleEntityMap"); 
      }); 
    } 
} 

espère que cela vous aidera :)