Suggerimento di mappatura per una chiave esterna eventualmente condivisa (oggetto valore in entità) in Entity Framework 4.1?

StackOverflow https://stackoverflow.com/questions/6073345

Domanda

Ho un'entità del progetto e un'entità RFI.L'entità del progetto contiene un elenco di teamMembers.Il progetto è una proprietà di navigazione nell'entità RFI.Nell'entità RFI c'è un destinatario.Questo ID rappresenta una persona dalla collezione TeamMembers.Quindi immagina, su una pagina web, abbiamo una casella a discesa denominata destinatario.L'elenco include tutti i membri del team del progetto.L'utente selezionerà un contatto da quell'elenco.L'ID di tale contatto sarà salvato nella proprietà destinatari.Quando la pagina viene ricaricata, selezioneremo l'ID di quell'utente nel discesa in base al valore nella proprietà RiceveinsId.Qual è il modo migliore per mappare questo in EF 4.1 usando l'API fluente?

    public class Project : BaseEntity
    {
        public string ProjectNumber { get; set; }
        public string Description { get; set; }

        public string CreatedBy { get; set; }
        public string ModifiedBy { get; set; }
        public string Currency { get; set; }


        #region Navigation Properties
        public Guid AddressId { get; set; }
        public virtual Address Address { get; set; }
        public Guid CompanyCodeId { get; set; }
        public virtual CompanyCode CompanyCode { get; set; }
        public virtual ICollection<Contact> TeamMembers { get; set; }
        #endregion

    }


    public class Rfi : Document
    {
        public string Number { get; set; }
        public string Subject { get; set; }
        public string SubcontractorRfiReference { get; set; }
        public string SpecificationSection { get; set; }

        public RfiStatus RfiStatus { get; set; }

        public Guid RecipientId { get; set; }


        #region Navigation Properties
        public Guid ProjectId { get; set; }
        public Project Project { get; set; }
        #endregion
    }
.

È stato utile?

Soluzione

Come capisco che il tuo problema è la mappatura tra Rfi e Contect - Project non ha alcun ruolo nella funzionalità destinatario dal punto di vista del database.

È necessaria una proprietà di navigazione Recipient in Rfi o Rfis Navigation Proprietà in Contact.Codice EF First Ha bisogno di proprietà di navigazione su almeno un lato della relazione.

Quindi puoi usare qualcosa come:

public class Rfi : Document
{
    public string Number { get; set; }
    public string Subject { get; set; }
    public string SubcontractorRfiReference { get; set; }
    public string SpecificationSection { get; set; }

    public RfiStatus RfiStatus { get; set; }

    #region Navigation Properties
    public Guid RecipientId { get; set; }
    public Contact Recipient { get; set; }
    public Guid ProjectId { get; set; }
    public Project Project { get; set; }
    #endregion
}
.

E la mappa:

modelBuilder.Entity<Rfi>()
            .HasRequired(r => r.Recipient)
            .WithMany()
            .HasForeignKey(r => r.RecipientId);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top