我在 ASP.NET 中遇到了 C# MVC 项目的问题。我遇到的问题是类别系统:如果一个类别已添加到公司,那么您应该无法添加任何作为父类别(层次结构中的更高级别)而不是已经添加的类别(因为它已经包含在搜索中)。
现在我已经在 C# 代码中添加了这个:
if (companyToUpdate.Category.Any(x => x.Parent.Any(z => z.ID == currentCategoryID))) {
//already exists
}
现在的问题是我想将此检查添加为 SQL Server 数据库中的存储过程。
我的结构如下所示:
公司(所有公司)
ID Title
1 StackOverflow
类别(所有类别)
ID Title
1 Website
2 Helpful site
3 Very helpful site
CategoryDetails(用于了解每个类别的父/子,每个类别与其所有父项都有关系)(网站 -> 有用的站点 -> 非常有用的站点)
Parent_ID Child_ID
1 2
1 3
2 3
CompanyCategoryDetails(该公司添加了哪些类别?)
Company_ID Category_ID
1 3
现在解决问题:当您尝试在 CompanyCategoryDetails 中添加新行 (1, 2) 时,它应该被拒绝,因为您已经向其中添加了 Category_ID 3,这意味着 Category_ID 2 已经包含在 CategoryDetails 中指定桌子。
我开始检查我在哪里 INNERJOIN 表,但在我意识到它不能按照我的想法完成之前并没有走多远。