【问题标题】:How to implement LinkedList in Entity Framework Core如何在 Entity Framework Core 中实现 LinkedList
【发布时间】:2018-12-27 01:54:29
【问题描述】:

我想在我的 ASP.Net Core 应用程序中使用对象的链接列表。为简单起见,我将使用 blog 和 cmets;尽管真实的上下文要复杂得多。

我搭建了两个表,并将ICollection<Comment> 更改为LinkedList<Comment>。但是,如果我创建一个初始迁移并应用到一个空数据库,我不会在数据库中得到任何“链接”(没有下一个或上一个)。另外,如果我播种数据,然后执行以下操作:

var comments = _context.blogs.First().Comments

我收到null。如果我离开public virtual ICollection<Comment> Comments,我得到IEnumerable 就好了。

我尝试改用LinkedList<LinkedListNode<Comment>>,除非我尝试创建迁移,否则效果很好。报错

没有为实体类型“LinkedListNode”找到合适的构造函数。以下构造函数具有无法绑定到实体类型属性的参数:无法在 'LinkedListNode(Comment value)' 中绑定 'value';无法在“LinkedListNode(LinkedList 列表,注释值)”中绑定“列表”、“值”。

我找不到如何在 C#/.NET Core 中实现 LinkedList 的任何指导(显然,我可以手动完成,有 nextprev 字段 - 但我更喜欢使用框架功能,如果可能的话!)

【问题讨论】:

  • 据我所知,对此没有标准的框架方法(我可能是错的),您似乎必须自己管理它
  • 谢谢。显然,我希望得到不同的答案;但很高兴知道我没有错过明显的东西:)
  • 您可以覆盖保存更改,或者 gasp 创建服务器端触发器(尽管这两个似乎都充满了问题)
  • 您可能想查看stackoverflow.com/questions/24033924/…。我很确定你可以做到这一点,你只需要正确地创建模型。也许您可以在这里发布模型和上下文代码,我们可以指出您的问题。
  • 谢谢,@GlennSills。我想你误解了这个问题。我没有手动设计链接列表时遇到问题。我不想想要。我想使用 .NET 内置的 LinkedList 和(可能)LinkedListNode 类。您链接到的帖子没有提到任何这些。看起来我想要做的是不可能 - 所以我已经手动完成了。注意:其中一个答案提到了LinkedListNode 类,但它看起来像海报的自定义类;模糊的框架类。我绝对不想做的事情

标签: c# asp.net-core linked-list entity-framework-core


【解决方案1】:

我对 MS SQL 服务器了解不多,但是 mysql 中的整个 next 和 prev 部分将不起作用,因为您无法映射正确跟踪字段所需的键,因为每个链接都必须有一个要链接到的数据库中的 ID。我只知道自己创建下一个/上一个并使用一些自定义数据持久性或数据注释。但是我很确定任何关系数据库上的外键约束都会阻止您自动保留这些类型的字段。跟踪删除、插入等的原因将是一场噩梦,因为如果您删除链的中间部分,那么数据库必须尝试猜测将末端链接到的位置

【讨论】:

  • 谢谢。如果您的句子更简洁,那么阅读和理解您要说的内容会容易得多。无论如何,虽然我喜欢 MySQL,但我无法将您的评论与我的问题联系起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多