首页 / 知识
关于数据库:LINQ to SQL用于自引用表?
2023-04-14 03:58:00

LINQ to SQL for self-referencing tables?我有一个自引用类别表。 每个类别都有一个CategoryID,ParentCategoryID,CategoryName等。每个类别可以具有任意数量的子类别,并且每个子类别可以具有任意数量的子类别,依此类推。 所以基本上树可以是X层深。 然后将产品与叶子(子)类别关联。 有没有一种方法可以使用LINQ to SQL来获取给定类别的所有产品(与该产品的所有后代关联的所有产品)? 这感觉像是一个递归问题。 改用存储过程更好吗? 我认为linq-to-sql对这个问题没有很好的答案。由于您使用的是sql server 2005,因此可以使用CTE进行层次查询。存储过程或内联查询(使用DataContext.ExecuteQuery)都可以解决问题。
好吧,这是一个使用LINQ的紧急解决方案。
我处理此问题的方法是使用一些扩展方法(过滤器)。我已经从实现了该项目的项目中编写了一些示例代码。专门查看我要填充ParentPartner对象和SubPartners列表的行。
高性能方法是创建一个插入/修改/删除触发器,该触发器维护一个完全不同的表,该表包含所有节点的所有祖先的节点-祖先对。这样,查找为O(N)。 要使用它来获取属于一个节点及其所有后代的所有产品,您只需选择将目标节点作为祖先的所有类别节点即可。之后,您只需选择属于这些类别中任何一个的任何产品。 |
最新内容
相关内容
用于业余项目的优秀 Python 库
用于业余项目的优秀 Python 库,数据,工具,项目,信息,培训,系统,地图,下来,工作,管理,1.在数据库中即时保存数据:Dataset当我们想要在不知道最python 用于序列操作的常用内置函
python 用于序列操作的常用内置函数,较大,培训,列表,函数,元素,对象,参数,操作,字符串,序列,len(列表):返回列表中的元素个数,同样适用于元组、是否有用于在数据库中存储标准化电
是否有用于在数据库中存储标准化电话号码的标准?,是否有用于在数据库中存储标准化电话号码的标准?,字段,数据结构,数据库,电话号码,Is关于注释:是否有用于注释C#代码的标
关于注释:是否有用于注释C#代码的标准(例如phpdoc或python \\的docstring)?,关于注释:是否有用于注释C#代码的标准(例如phpdoc或pyt关于算法:用于2D碰撞检测的技术资源
关于算法:用于2D碰撞检测的技术资源?,关于算法:用于2D碰撞检测的技术资源?,用于,碰撞检测,2D,网页,Resources of techniques use for col关于数据库:简单的密码加密
关于数据库:简单的密码加密,关于数据库:简单的密码加密,用于,加密,方案,密码,Simple password encryption什么是用于保护数据库中密码关于c#:您可以将LINQ工具(例如SQLMet
关于c#:您可以将LINQ工具(例如SQLMetal)用于访问数据库吗?,关于c#:您可以将LINQ工具(例如SQLMetal)用于访问数据库吗?,数据库应用,框架,创版本控制(即Subversion)是否适用于
版本控制(即Subversion)是否适用于文档跟踪?,版本控制(即Subversion)是否适用于文档跟踪?,文档,部门,多个,源代码,Is version control关于数据库:MS Access的免费替代品
关于数据库:MS Access的免费替代品,关于数据库:MS Access的免费替代品,操作,应用程序,桌面,将其,Good Free Alternative To MS Access关于数据库:有人使用CouchDB吗?
关于数据库:有人使用CouchDB吗?,关于数据库:有人使用CouchDB吗?,项目,充斥,网站,代码类,Anyone using CouchDB?在过去的几年中,我一直关注写得很好的开源项目(用于学习)?
写得很好的开源项目(用于学习)?,写得很好的开源项目(用于学习)?,学习,编程,开放源代码,程序,Well written open source projects (for适用于Web应用程序的MySQL与Postgr
适用于Web应用程序的MySQL与PostgreSQL,适用于Web应用程序的MySQL与PostgreSQL,应用程序,想知道,部署,更合适,MySQL vs PostgreSQL f