如何在实体框架核心中实现LinkedList

时间:2018-12-27 01:54:30

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

我想在我的ASP.Net Core应用程序中保留使用的对象的链接列表。为了简单起见,我将使用博客和评论。尽管实际情况要复杂得多。

我搭建了两个桌子,并将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字段-但我非常喜欢尽可能使用框架功能!)

1 个答案:

答案 0 :(得分:0)

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

相关问题