2013-05-21 4 views
0

À mon avis, je dois retourner FullName pour chaque initiateur et propriétaire. Pour ce faire, l'initiateur et le propriétaire doivent-ils être des clés étrangères de EmployeeID? Je ne suis pas sûr comment faire à la fois les clés étrangères Initiator et Owner en utilisant le code d'abord ni comment afficher FullName en utilisant rasoir.Code premières clés étrangères

Des idées? Merci.

ChangeRequest

namespace Project.Models 
{ 
    public class ChangeRequest 
    { 
     public int ChangeRequestID { get; set; } 
     public int Initiator { get; set; } 
     public int Owner { get; set; } 
    } 
} 

employé

namespace Project.Models 
{ 
    public class Employee 
    { 
     public int EmployeeID { get; set; } 
     public string Surname { get; set; } 
     public string FirstName { get; set; } 

     public string FullName 
     { 
      get 
      { 
       return Surname + ", " + FirstName; 
      } 
     } 
    } 
} 

Voir

@foreach (var item in Model.ChangeRequests) 
{ 
    @Html.DisplayFor(modelItem => item.Initiator) 
    @Html.DisplayFor(modelItem => item.Owner) 
} 

Répondre

0

Vous ne l'avez pas mentionné la version EF, i Si vous voulez un chargement paresseux, ou si vous utilisez des attributs ou Fluent API, voici une bonne référence pour les Assocations Many-Valuées using Fluent API et une autre utilisant DataAnnotations, et un peu d'exemple de code faisant des suppositions sur la version, le chargement paresseux et les attributs:

public class ChangeRequest 
{ 
    [Key] 
    public int ChangeRequestID { get; set; } 
    public int? InitiatorId { get; set; } 
    public int? OwnerId { get; set; } 

    [ForeignKey("InitiatorId")] 
    public virtual Employee Initiator { get; set; } 
    [ForeignKey("OwnerId")] 
    public virtual Employee Owner { get; set; } 
} 
public class Employee 
{ 
    [Key] 
    public int EmployeeID { get; set; } 
    public string Surname { get; set; } 
    public string FirstName { get; set; } 

    [InverseProperty("Initiator")] 
    public virtual ICollection<ChangeRequest> CrsInitiated { get; set; } 
    [InverseProperty("Owner")] 
    public virtual ICollection<ChangeRequest> CrsOwned { get; set; } 

    [NotMapped] 
    public string FullName 
    { 
     get 
     { 
      return Surname + ", " + FirstName; 
     } 
    } 
} 

Razor:

@foreach (var item in Model.ChangeRequests) 
{ 
    @Html.DisplayFor(modelItem => item.Initiator.FullName) 
    @Html.DisplayFor(modelItem => item.Owner.FullName) 
}