我尝试加载

时间:2016-11-29 22:32:03

标签: asp.net-mvc entity-framework

我正在尝试显示两个表中的数据。我尝试了这个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”和'rola' - 有两列'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; }
}

它们是由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'的定义,并且没有扩展方法'nazwaRoli'可以找到接受类型'ICollection'的第一个参数(你是否缺少using指令或汇编引用?)

我错过了什么吗?我试着在本教程中做所有事情,但出了点问题。

1 个答案:

答案 0 :(得分: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)
    }
}