2016-04-21 44 views
2

我試圖顯示來自兩個表與外鍵聯接的數據。 我的模型:如何顯示來自兩個表的數據首先代碼EF ASP.NET MVC 5

public class Deal 
{ 
    [Key] 
    public int ID { get; set; } 

    [Display(Name = "Client name")] 
    public string ClientName { get; set; } 

    public string UserId { get; set; } 

    [ForeignKey("UserId")] 
    public virtual ApplicationUser User { get; set; } 
} 

public class ApplicationUser : IdentityUser 
{ 
    [Key] 
    public override string Id { get; set; } 

    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    // FK 
    public virtual ICollection<Deal> Deals { get; set; } 
} 

我的控制器:

// GET: Deal 
public ActionResult Index() 
{ 
    return View(db.Deals); 
} 

我怎樣才能在查看一些像這樣顯示:

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.NazwaKlienta) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.User.Nazwisko)!!! 
    </td> 
</tr>} 

我總是得到錯誤Invalid column name 'Discriminator'. @Html.DisplayFor(modelItem => item.User.Nazwisko)

+4

使用視圖(視圖模型)所需的屬性創建一個新類並從兩個表中讀取數據並分配此類的屬性。使您的視圖強烈鍵入這個視圖模型。 SO中有很多例子。 – Shyju

+2

Google _無效的列名稱'Discriminator'._,您會發現很多可能的解決方案。 –

回答

0

如果您有一個包含兩個表的屬性的ViewModel,則可以將實體的值分配給viewmodel的屬性並最終顯示它。

例如:

public class Deal 
{ 
    [Key] 
    public int ID { get; set; } 

    [Display(Name = "Client name")] 
    public string ClientName { get; set; } 

    public string UserId { get; set; } 

    [ForeignKey("UserId")] 
    public virtual ApplicationUser User { get; set; } 
} 

public class ApplicationUser : IdentityUser 
{ 
    [Key] 
    public override string Id { get; set; } 
    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    public virtual ICollection<Deal> Deals { get; set; } 
} 

public class ViewModelTest 
{ 
    public int DealId { get; set; } 
    public string ClientName { get; set; } 
    public string UserId { get; set; } 

    public string ApplicationUserId { get; set; } 
    public string FirstName { get; set; } 
} 

如果你寫一些代碼,將分配實體值到視圖模型的屬性,您可以顯示使用視圖模型的兩個實體。