2013-05-21 83 views
0

在我看来,我需要为每个Initiator和Owner返回FullName。为此,Initiator和Owner都应该是EmployeeID的外键?代码第一个外键

我不知道如何使用代码先创建启动器和所有者外键,也不知道如何使用剃刀显示FullName。

任何想法?谢谢。

ChangeRequest

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

员工

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; 
      } 
     } 
    } 
} 

查看

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

回答

0

您没有提到EF版本,我如果你想延迟加载,或者如果你使用的是属性或流利的API,所以这里有很多关于多值联合的参考,using Fluent API和一个使用DataAnnotations,以及一些示例代码,对版本,延迟加载和属性做一些假设:

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; 
     } 
    } 
} 

剃刀:

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