2016-11-29 61 views
0

我想顯示兩個表中的數據。我試過這個https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application並使用急切加載。錯誤的視圖時,我嘗試着急加載

我有三張桌子'uzytkownik','rolaPowiazanie'和'rola'。 'rolaPowiaznie' 連接「uzytkownik」和 '羅拉' - 有兩個列 'idRola' 和 'idUzytkownik' 端這個表是我的數據模型不可見

我的模型:

uzytkownik

public partial class uzytkownik 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public uzytkownik() 
    { 
     this.ocenaPowiazanie = new HashSet<ocenaPowiazanie>(); 
     this.przedmiotPowWykladowca = new HashSet<przedmiotPowWykladowca>(); 
     this.grupa = new HashSet<grupa>(); 
     this.rola = new HashSet<rola>(); 
    } 

    [Key] 
    public int idUzytkownik { get; set; } 
    public string imie { get; set; } 
    public string nazwisko { get; set; } 
    public string pesel { get; set; } 
    public string haslo { get; set; } 
    public string email { get; set; } 
    public Nullable<bool> stan { get; set; } 

    public virtual ICollection<rola> rola { get; set; } 
} 

羅拉

public partial class rola 
    { 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public rola() 
    { 
     this.uzytkownik = new HashSet<uzytkownik>(); 
    } 
    [Key] 
    public int idRola { get; set; } 
    public string nazwaRoli { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<uzytkownik> uzytkownik { get; set; } 
} 

他們automaticaly通過ADO.NET實體數據模型生成 - 數據庫第一

正如在教程中,我試圖預先加載和我的控制器看起來像:

public class UzytkownicyController : Controller 
{ 
    private PegazEntities db = new PegazEntities(); 

    // GET: Uzytkownicy 
    public ActionResult Index() 
    { 
     var uzytkownicy = db.uzytkownik.Include(x => x.rola); 
     return View(uzytkownicy.ToList()); 
    } 

在我看來,我想:

@Html.DisplayFor(modelItem => item.rola.nazwaRoli) 

「的ICollection」不包含定義「nazwRoli」無可以找到接受類型'ICollection'的第一個參數的擴展方法'nazwaRoli'(您是否缺少使用指令或程序集引用?)

我錯過了什麼嗎?我試圖像本教程中那樣做所有事情,但出了點問題。

+0

它不知道的類型,所以它回落到ICollection的。嘗試使用演員。類似於@ Html.DisplayFor(modelItem =>((uzytkownik)item.rola).nazwaRoli) – Nikki9696

+0

與您所問的問題不完全相關,但您可能需要閱讀Microsoft的大寫化指南(https:// msdn .microsoft.com/EN-US /庫/ ms229043.aspx);基本上,屬性和類/結構體/枚舉應該是帕斯卡的情況。你不需要遵循這些指導原則,但你可能應該這樣做。 –

回答

0

由於rola是一個集合,我不認爲你可以直接使用DisplayFor就可以了。你有沒有嘗試迭代集合呢?

例如,在你看來你可以做這樣的事情嗎?

@model List<uzytkownik> 

@foreach (var uzytkownik in Model) 
{ 
    foreach (var rola in uzytkownik.rola) 
    { 
     @Html.DisplayFor(model => rola.nazwaRoli) 
    } 
} 

,或者在使用foreach迭代器不能正常工作,那麼你可以只使用一個經典for循環:

@model List<uzytkownik> 

@for (var i; i < Model.Count; i++) 
{ 
    for (var j; j < Model[i].rola.Count(); j++) 
    { 
     @Html.DisplayFor(model => model[i].rola[j].nazwaRoli) 
    } 
} 
+0

非常感謝你:)第一個作品 – Katniss

相關問題