实体框架 4.1 检索自引用数据

2024-01-04

我首先使用 Entity Framework 4.1 代码和 ASP.NET MVC 3,并且我正在努力正确设置自引用。我有一个类别类。它必须是自我引用的。当表中ParentCategoryId为空时,类别可以是父类别。如果某个类别具有带值的 ParentCategoryId,则表示它属于父类别。

我跟着这个article http://www.codeproject.com/Articles/206410/How-to-Configure-a-Self-Referencing-Entity-in-Code关于代码项目。

这是我的类别:

public class Category
{
     public int Id { get; set; }
     public string Name { get; set; }
     public string Description { get; set; }
     public string MetaKeywords { get; set; }
     public string MetaDescription { get; set; }
     public bool IsActive { get; set; }
     public virtual Category ParentCategory { get; set; }
     public int? ParentCategoryId { get; set; }
}

我的上下文类:

public class PbeContext : DbContext
{
     public DbSet<Category> Categories { get; set; }

     protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
     {
          dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

          dbModelBuilder.Entity<Category>()
               .HasOptional(c => c.ParentCategory)
               .WithMany()
               .HasForeignKey(p => p.ParentCategoryId);
     }
}

不确定以上是否正确?

有人可以帮我解决这个问题吗?我需要的是,当我通过 id 查询类别时,它必须带回父类别(仅在需要时加载)。它还必须加载任何子类别(仅在需要时)。我尚未将列表添加到子类别的类别类中。

检索具有父类别和子类别的类别时,上述查询会是什么样子?

EDIT

这是我检索类别的方法:

public Category GetById(int id)
{
     return db
          .Categories
          .Find(id);
}

由于 ParentCategory 引用可以为空,我将如何在视图中显示它?我有以下内容:

@Model.ParentCategory.Name

..但是如果该类别没有与其关联的父类别,它不会给出错误吗?我将如何在视图中显示它?


如果您需要访问子类别,您可以向模型添加集合属性

public class Category
{
     public int Id { get; set; }
     public string Name { get; set; }
     public string Description { get; set; }
     public string MetaKeywords { get; set; }
     public string MetaDescription { get; set; }
     public bool IsActive { get; set; }
     public virtual Category ParentCategory { get; set; }
     public int? ParentCategoryId { get; set; }
     public virtual ICollection<Category> ChildCategories{ get; set; }
}

然后你可以将模型设置为

      dbModelBuilder.Entity<Category>()
           .HasOptional(c => c.ParentCategory)
           .WithMany(c => ChildCategories)
           .HasForeignKey(p => p.ParentCategoryId);

Edit

您应该检查是否ParentCategory是否为空。

@if(Model.ParentCategory != null){
  <div>@Model.ParentCategory.Name</div>
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架 4.1 检索自引用数据 的相关文章

  • 如何使用 LINQ 获取唯一 id 列的最大值

    如何使用 LINQ 以最简单的方式编写此代码 SELECT MAX Game id AS MaxValue FROM Dim Game Try context Dim Games Max g gt g Game id
  • 谁能发现为什么我在测试 EF 5 beta 时不断遇到此错误

    安装了 Visual Studio 11 Beta 因为想要测试 EF 5 Beta 但一直遇到此错误 未找到方法 Void System Data Objects ObjectContextOptions set UseConsisten
  • 实体框架未正确修改或删除子项

    我正在尝试保存Firm包含地址和网站的对象 我开发了在 Angular 7 中使用反应式表单在 UI 中添加和删除地址控件的功能 Firm对象 它正在为地址和网站创建附加条目 而不是将其视为现有记录 因此 如果我从 UI 中删除网站和地址
  • 实体框架:在运行时更改连接字符串

    假设有一个 ASP NET MVC 应用程序使用 Entity Framework 6 和代码优先方法以及 StructureMap 作为 IoC 它还使用工作单元模式 域类 public class Product public int
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 实体框架层次结构的代码优先映射

    我有一个看起来像这样的模型 public class Category public string Id get set public string Description get set public Category Parent ge
  • 在实体框架上克隆数据[重复]

    这个问题在这里已经有答案了 我正在创建软件 用户可以在其中基于旧产品创建新产品 现在我需要使用实体框架进行复制 克隆操作 首先我开始这样写 foreach sourcedata1 in table1 create new table cop
  • 好的实体框架示例应用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一些使用实体框架的优秀 asp net 示例应用程序 我看到了几个 NorthWind 应用
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • EF Core 一对多关系列表返回 null

    我正在尝试学习如何在 EF Core 中正确利用 DbContext 我有一个团队课程 public class Team public int ID get set public string Name get set public bo
  • 使用实体框架创建临时表

    我想使用实体框架在 SQL Server 中创建临时表 我有什么办法可以做到这一点吗 如果我可以创建临时表 我的下一个问题是 如何读取它 提前致谢 Andr 好吧 所以你不喜欢存储过程路线 说实话我也不喜欢 但这是我能想到的最快的方法 基于
  • 如何在 EF 查询中使用函数参数化选择器?

    我有一个传递给的投影函数IQueryable lt gt Select method private static Expression
  • MVC3远程模型验证操作中的参数名称

    我使用远程验证属性SSN属性 在视图页面中我使用通用视图 然后 ssn 字段如下 Html EditorFor model gt model MainModel SSN Html ValidationMessageFor model gt
  • .ToList()、.AsEnumerable()、AsQueryable() 之间有什么区别?

    我知道第一个实现的 LINQ to Entities 和 LINQ to Objects 的一些区别IQueryable第二个实现IEnumerable我的问题范围在EF 5以内 我的问题是这 3 种方法的技术差异是什么 我发现在很多情况下
  • 实体框架 4:成功保存时的 ObjectContext 事件

    有没有什么好的方法可以检测到ObjectContext更改实际上已提交 SavingChanges发生在进入数据存储之前 但我还需要一种方法来知道这些更改是否实际提交 提前致谢 约翰 Update 我拥有的是代码优先的 DbContext
  • 如何检查 EntityTypeConfiguration 实例的成员配置?

    我正在使用 Entity Framework Code First 和继承自 EntityTypeConfiguration 的映射类 我这样做是为了封装我使用 Code First Fluent API 来配置实体的方法 我希望能够检查这
  • 实体框架死锁问题

    我在使用 NET 4 的新实体框架时遇到了一个奇怪的问题 我有一个 SQL Server 2005 EXPRESS 数据库 我的服务使用实体框架将数据写入两个表 假设表是 TableA 和 TableB TableB 具有 TableA 的
  • 将有用的消息从一个控制器传递到另一个重定向的控制器

    我想在用户单击按钮后创建 RedirectToAction 在重定向之前 我将信息存储到变量中 最后 在我转向行动之后 我想展示一些有用的信息 我试过这个 ViewBag message User with ID id was change
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • 表格不会提交

    我的 jquery mobile modernizr 网站上有一个表单 我正在使用 jquery mobile 的 1 1 0 rc 1 我的页面上有此表单 但它没有提交 单击搜索按钮绝对不会执行任何操作 我不知道为什么 有任何想法吗 p

随机推荐

  • 如何使用 useEffect() 更改 React-Hook-Form defaultValue?

    我正在创建一个页面 供用户使用 React Hook Form 更新个人数据 加载分页后 我使用useEffect获取用户当前的个人数据并将其设置为表单的默认值 我将获取的值放入defaultValue of
  • libvlc_new 始终返回 NULL

    我尝试做教程示例 https wiki videolan org LibVLC Tutorial libvlc 的工作 我通过安装了vlc SDKsudo apt install libvlc dev并链接到它 lvlc 编译和链接完成时没
  • 在移动 Safari 中忽略 Overflow-x 值

    我们将body和可滚动元素上的overflow x值设置为隐藏 但移动Safari会忽略这些值 在桌面上 溢出值工作正常 相关代码 body overflow x hidden width 320px height 100 min heig
  • 如何修复状态为“已拒绝”的 dig 命令?

    我需要帮助修复被拒绝的状态 我看了一下named conf一切看起来都很好 我什至改变了allow query to any 它曾经是localhost dig xxx com ns1 xxx com lt lt gt gt DiG 9 8
  • C++中的时差

    有谁知道如何计算 C 中的时间差 以毫秒为单位 我用了difftime http linux die net man 3 difftime但它对于我想要测量的东西来说没有足够的精度 我知道这是一个老问题 但 C 0x 有一个更新的答案 有一
  • 如何避免在 GEKKO 中创建许多二进制切换变量

    我通过最小化数千个方程来求解 14 个变量IMODE 3 in GEKKO 每个方程都是真实响应与 P 样条模型预测之间的平方误差 i e 惩罚 B 样条 eq i m Minimize y true i spline coeffs kno
  • Python:如何创建函数?例如f(x) = ax^2

    我想要对函数进行某种引用 但我不知道是否需要使用def f x or a lambda某种 例如我想print f 3 并让它输出9a 或者这不是 python 的工作原理 第二个问题 假设我有一个工作函数 我如何返回degree of i
  • Excel VBA 在 Windows 10 中回答 Internet Explorer 11 下载提示?

    我正在尝试自动下载 csv 文件http www nasdaqomxnordic com http www nasdaqomxnordic com使用 Excel 2010 VBA 和 Internet Explorer 如何使用 保存 自
  • 如何消除 iPad 应用程序主窗口上的圆角?

    我见过一些 iPad 应用程序填满屏幕 例如 Stanza 或在状态栏下方形成方形角 例如 iPod 播放器顶部有方形角 底部看不出来 有人知道这是怎么做到的吗 默认情况下 顶层 UIWindow 似乎应用了一个剪切区域 因为我放置在该窗口
  • 显示网络浏览器设置

    使用不同的网络浏览器及其版本号字符串以及无数的配置列表确实很痛苦 我想知道是否有人想出了一个网页 可以将浏览器设置转储到浏览器 以便可以保存并转发给开发人员 Thanks 像这样的东西吗 http mybrowserinfo com det
  • 预期是二维数组,却得到一维数组,而是错误

    我得到的错误为 ValueError 需要 2D 数组 却得到 1D 数组 array 45000 50000 60000 80000 110000 150000 200000 300000 500000 1000000 如果数据具有单个特
  • 委托、Lambda 和 LINQ,天哪!

    作为一名相当初级的开发人员 我遇到了一个突出我经验不足和知识漏洞的问题 如果这里的序言太长 请原谅 我发现自己参与的一个项目需要学习许多 对我而言 新技术 其中包括 LINQ 用于该项目的 OBJECTS 和 XML 等 到目前为止我读到的
  • 如何获取使用“文本数字”的字体的升序或降序高度

    我对文本数字有疑问 参见维基百科 http en wikipedia org wiki Text figures 在使用以下命令创建的 PDF 文档中itextsharp 基线和数字最低点之间的距离 例如9 与字体的正常下降高度不同 使用下
  • 验证多态关联模型中的范围唯一性

    是的 所以我有一个多态关联 允许收藏不同的对象类型 所以一个人可以喜欢一个产品 一个人 或者其他什么 我想要做的是防止有人使用验证收藏夹模型中的唯一性来复制收藏夹 class Favorite lt ActiveRecord Base be
  • XMLHttpRequest 与 HttpRequest

    有谁知道 什么是XMLHttpRequest使网页能够执行普通网页无法完成的操作HttpRequest XMLHttpRequest http en wikipedia org wiki XMLHttpRequest是一个标准的 javas
  • 如何使用 Pandas 的时间戳按小时对数据帧进行分组

    我有以下使用时间戳索引的数据帧结构 neg neu norm pol pos date time 1520353341 0 000 1 000 0 0000 0 000000 0 000 1520353342 0 121 0 879 0 2
  • 使用 iText 在横向模式下绘制线条

    这是我用来画线的代码 double lineArray annotation getAsArray PdfName L asDoubleArray double x1 lineArray 0 rect getAsNumber 0 doubl
  • 对某一部分贪婪的正则表达式,对其他部分不贪婪的正则表达式

    我在 R 中使用正则表达式 但我希望它对左侧部分贪婪 对右侧部分非贪婪 假设我想提取单词 left 和 right 之间的文本 但我希望它是贪婪的 并继续在文本中查找单词 left 直到找到最后一次出现 但是 我也希望它不贪婪于 正确 并在
  • 将 SpatialPolygonsDataFrame 导出为 R 中的 geojson 或 topojson

    我正在尝试将伦敦地方当局的 geojson 转换为六角形图表 其中每个六边形代表一个地方当局 它在 R 中工作 但是当我尝试将生成的十六进制网格导出为 geojson 或 topojson 时 出现以下错误 Error in sp Spat
  • 实体框架 4.1 检索自引用数据

    我首先使用 Entity Framework 4 1 代码和 ASP NET MVC 3 并且我正在努力正确设置自引用 我有一个类别类 它必须是自我引用的 当表中ParentCategoryId为空时 类别可以是父类别 如果某个类别具有带值