0

ASP.NET の C# MVC プロジェクトで問題が発生しています。私が抱えている問題は、カテゴリ システムにあります。1 つのカテゴリが会社に追加されている場合、既に追加されているカテゴリよりも親 (階層の上位レベル) であるカテゴリを追加することはできません (既に追加されているため)。検索に含まれます)。

これを既に使用している 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

CategoryDe​​tails (各カテゴリの親/子を知るために使用されます。すべてのカテゴリはそのすべての親との関係を持っています) (Web サイト -> 役立つサイト -> 非常に役立つサイト)

Parent_ID   Child_ID
1           2
1           3
2           3

CompanyCategoryDe​​tails (この会社に追加されたカテゴリは?)

 Company_ID Category_ID
1           3

ここで問題: 新しい行 (1, 2) を CompanyCategoryDe​​tails に追加しようとしている場合、Category_ID 3 を既に追加しているため、CategoryDe​​tails で指定された Category_ID 2 が既に含まれているため、拒否する必要があります。テーブル。

テーブルを内部結合する場所をチェックし始めましたが、考えていた方法では実行できないことに気付くまで、それほど時間はかかりませんでした。

4

1 に答える 1

1

あなたが求めている小切手はこれだと思います:

IF EXISTS(
SELECT * 
FROM    CompanyCategoryDetails CCD
JOIN    CategoryDetails CD
        ON  CCD.Category_ID = CD.Child_ID
WHERE   CCD.Company_ID = @Company_ID
AND     (CD.Parent_ID = @Category_ID OR CD.Child_ID = @Category_ID))
BEGIN
    --already exists
END

これは、会社に (a) 親カテゴリまたは (b) 既存のカテゴリを追加しようとしているかどうかをチェックします

于 2012-10-17T08:24:02.883 に答える