gpt4 book ai didi

c# - 使用 Entity Framework 的代码优先方法的 ASP.NET MVC 应用程序中缺少外键关系

转载 作者:可可西里 更新时间:2023-11-01 08:40:12 25 4
gpt4 key购买 nike

我正在构建一个 ASP.NET MVC 5“待办事项列表”应用程序,用户可以在其中添加类别并向类别添加任务。我正在使用 Entity Framework 7 和一种“代码优先”方法,但使用的是现有数据库。

我在 Microsoft SQL Server Management Studio 中使用 Category 创建了一个数据库和一个 Item表,每个 Item有一个 CategoryId列是类别的 Id 的外键专栏。

然后我创建了一个空的 MVC5 应用程序,并与该数据库建立了数据库连接。我创建了一个 Item类和一个Category Models 文件夹中对应于数据库中的表的类。

项目类别:

namespace ToDoList.Models
{
[Table("Item")]
public partial class Item
{
public int ItemId { get; set; }
public string Description { get; set; }

[ForeignKey("Category")]
public int CategoryId { get; set; }

public virtual Category Category { get; set; }
}
}

类别类:

namespace ToDoList.Models
{
[Table("Category")]
public partial class Category
{
public Category()
{
this.Items = new HashSet<Item>();
}

public int CategoryId { get; set; }
public string Name { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
}

我想要 Item 的 View 显示其 CategoryName属性(property)。 View 的模型是所有 Item 的集合在 Item 中表(IEnumerable<ToDoList.Models.Item>)。假设我想打印一个列表,其中每个项目后跟与其相关的类别名称。这是我的代码:

    <ul>
@foreach(var item in Model)
{
<li>@Html.DisplayFor(modelItem => item.Description) @Html.DisplayFor(modelItem => item.Category.Name)</li>;

}
</ul>

Item显示得很好,但页面没有显示 Category 的任何内容.当我使用 ADO.NET 实体数据模型创建类时,同样的代码确实有效,但我无法使用 ASP.NET 5 创建实体数据模型,所以我正在尝试这种代码优先的方法。

关于应用为何不使用外键关系的任何想法或我可以尝试的建议?

最佳答案

您可以使用 eager loading在查询中包含 Category,使用:

var model = db.Items.Include("Category").ToList();

var model = db.Items.Include(x=>x.Category).ToList();

然后返回 View :return View(data);

关于c# - 使用 Entity Framework 的代码优先方法的 ASP.NET MVC 应用程序中缺少外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com