مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali

عضویت از 1392/03/25

استخراج لیست کاربران در رابطه Self refrence کاربر

  • چهارشنبه 16 آبان 1397
  • 17:58
تشکر میکنم

با سلام 

مدل مدیریت کاربران من به این صورت هستش که کاربر و نقش ارتباط چند به چند دارند. و کاربر با هر نقشی که بهش اختصاص داده شده ناظر چندین کاربر دیگه با نقشهای مختلف هستش. حالا من می خوام لیست کاربرانی که مستقیما زیر نظر هر کاربر هستند یا به طور غیر مستقیم هستند رو به دست بیارم. در به دست آوردن کاربران مستقیم مشکلی نیست ولی در به دست آوردن کاربران غیر مستقیم مشکل دارم. Self refrence هم با فیلد ParentId برقرار میشه.

لطفا راهنمایی کنید از چه راهی باید به دست بیارم.

با تشکر فراون

داده ها در جدول UserRole به صورت زیر ذخیره شدن

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 16 آبان 1397
  • 21:04

مشکلی نمیبینم !

ابتدا کاربر اصلی را بدست بیارید سپس یه لایه برید داخل و زیر مجموعه هاش رو بدست بیارید

نیاز به 2 کوئری هست

کاربر سایت

ali

عضویت از 1392/03/25

  • چهارشنبه 16 آبان 1397
  • 21:18
پس یعنی مثلا برای به دست آوردن لیست کامل تمام کاربران مستقیم و غیر مستقیم کاربر اول از رابطه بازگشتی استفاده کنم، روش درستی هست ش، یا با روش دیگه ای هم می تونیم به دست بیارم؟ اگه تعداد کاربران زیاد باشه با رابطه بازگشتی بار اجرایی سنگینی به برنامه اعمال نمی شه؟
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 16 آبان 1397
  • 21:28

میتونید از LeftJoin هم استفاده کنید ولی اگر خیلی زیاد باشن این بار روی سرور هست

اگر رابطه ها درست باشه با یه کوئری و Include میتونید بدست بیارید

کاربر سایت

ali

عضویت از 1392/03/25

  • پنجشنبه 17 آبان 1397
  • 00:14

مهندس میشه تو یک مثال برای کاربر اول کد لازم رو نشونم بدید، ممنون میشم کمک کنید چون پروژه سر این داستان گیر کرده.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 17 آبان 1397
  • 09:10
using (DataBaseFirstDBEntities db = new DataBaseFirstDBEntities())

            {

                var result = (from order in db.Orders

                              select new { ID = order.OrderID, Name = order.OrderName }).Union

                (from od in db.OrderDetails

                 select new { ID = od.OrderDetailID, Name = od.OrderDetailName }).OrderByDescending(p => p.ID).ToList();

            }

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)