تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 8 از 8

نام تاپيک: چگونگی استفاده عملی از کلید خارجی در سی شارپ ( به همراه SQL Server)

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2010
    پست ها
    25

    پيش فرض چگونگی استفاده عملی از کلید خارجی در سی شارپ ( به همراه SQL Server)

    سلام
    من دو جدول به شکل زیر دارم سمت چپ جدول sell و سمت راست جدول stuff نام داره .
    ستونstuffCode در جدول سمت راست کلید اصلی و ستون stuffCodeSell در جدول چپ کلید خارجی برای stuffCode ازجدول سمت راستی هست



    همچنین یه DataSet به شکل زیر در سی شارپ ساختم و دو جدول بالا رو تعریف کردم و کلید خارجی رو هم مانند شکل زیر معرفی کردم .



    حالا می خوام با این دیتا ست یه دیتا گرید مانند شکل زیر رو پر کنم البته از جدول sell ولی می خوام بجای stuffCodeSell معادل نام آن که در جدول stuff در ستون name هست قرار بگیره

    یعنی به جای عدد 1 نام pofak و به جای 3 saboon مثل جدول stuff . ازتون خواهش می کنم کمکم کنین به خصوص از شما علی اقا با تشکر .

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    دو راه داریذ.
    اول آنکه در جدول sell یک فیلد جدید بسازید و خصیصه readonly آن را true و خصیصه Expression آن را به Parent(RELATIONNAME).name تنظیم کنید.
    RELATIONNAME را میتوانید با کلیک روی خطی که دو جدول را به هم وصل کرده پیدا کنید.
    با این کار فیلد جدید ساخته شده بطور خودکار از جدول والد پر میشود و میتوانید در دیتاگرید از این فیلد استفاده کنید.

    دوم انکه در دیتاگریدتان بجای text-column عادی از combo-column استفاده کنید و منبع و خصایص وابسته به ان را با جدول stuff تغذیه کنید.
    آنگاه خود combobox داخل گرید عدد را برداشته و نام معادل را جایش نمایش میدهد.
    این روش اگر بخواهید قابلیت ویرایش هم داشته باشید کارآیی دارد.

    چرا یکی از جدولتان کلید ندارد؟؟؟ اگر کارتان در حد پروژه دانشگاهی و نمره گرفتن و از سرخود باز کردن و... نیست باید عرض کنم dataset زیادی قدیمی و کند و تکنولوژی غیر دلچسبی دارد، بهتر است به سمت entity framework بروید.
    موفق باشید.

  3. #3
    پروفشنال
    تاريخ عضويت
    Nov 2007
    پست ها
    546

    پيش فرض

    بسم الله الرحمن الرحیم
    اول آنکه در جدول sell یک فیلد جدید بسازید و خصیصه readonly آن را true و خصیصه Expression آن را به Parent(RELATIONNAME).name تنظیم کنید.
    با سلام
    دلیل خاصی داشت که فیلد جدیدی ایجاد کردید و از فیلد stuffCodeSell به عنوان کلید خارجی استفاده نکردید؟
    با سپاس

  4. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    دلیل خاصی داشت که فیلد جدیدی ایجاد کردید و از فیلد stuffCodeSell به عنوان کلید خارجی استفاده نکردید؟
    خوب این هم نوعی استفاده از کلید خارجی با توجه به امکانات DataSet است.
    برای نمایش در گرید یا باید از Combobox درون گرید استفاده کرد و یا فیلدمتنی را عینا در DataSet.Table داشت.
    برای پرشدن این فیلد متنی جدید دوراه وجود دارد، یکی همان است که گفته شد و راه دیگر تغییر دستور SQL-SELECT است که Join ای بین دو جدول داشته باشد و این فیلد خاص را از سریق Join ایجاد شده واکشی کند.
    اعتراف میکنم که (باتوجه به گشت کمی زمان) یادم نیست چرا این را به عنوان روش سوم ننوشتم.
    شاید منظور شما همین روش بوده(؟!) که اگر چنین است این هم روش خوبی است.

    ولی در کل همه این روش ها به واسطه وجود همان کلید خارجی ممکن میشود و معنی خواهد داشت.
    ممنون.

  5. #5
    پروفشنال
    تاريخ عضويت
    Nov 2007
    پست ها
    546

    پيش فرض

    بسم الله الرحمن الرحیم
    و راه دیگر تغییر دستور SQL-SELECT است که Join ای بین دو جدول داشته باشد و این فیلد خاص را از سریق Join ایجاد شده واکشی کند.
    اعتراف میکنم که (باتوجه به گشت کمی زمان) یادم نیست چرا این را به عنوان روش سوم ننوشتم.
    شاید منظور شما همین روش بوده(؟!) که اگر چنین است این هم روش خوبی است.

    ولی در کل همه این روش ها به واسطه وجود همان کلید خارجی ممکن میشود و معنی خواهد داشت.
    با سلام
    از اینکه وقت میذارید سپاسگزارم
    شما کدام مورد رو ترجیح میدید؟ (مثلا اگر بخواهید موجودی انبار را داشته باشید)
    از طرفی اگر بخواهیم اون رو در جدول ذخیره کنیم باید در تمام اینسرت های کالا و ورود کالا و خروج کالا تریگری داشته باشیم که موجودی رو آپدیت کنه و همین طور در مورد حذف و ...
    اگر هم نخواهیم اون رو ذخیره کنیم باید هر بار اون رو محاسبه کنیم.
    با سپاس فراوان

  6. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    من هیچ یک را ترجیح نمیدهم!
    به من باشد، اینها بریزید دور و از آخرین نسخه ممکن EntityFramework-CodeFirst استفاده کنید.
    بجای WinApp از WpfApp استفاده کنید و بجای ASP.Net Classic هم از ASP.Net MVC استفاده کنید.
    (البته نسخه vNext هم که در راه است و اخیراً نمونه آزمایشی VS vNext جهت دانلود موجود است، پس دلیلی بر استفاده از این تکنولوژی های غبارگرفته وجود ندارد)

    درخصوص موجودی انبار هم بسته به شرایط مختلف نرم افزاری (تعداد انبار و محاسبات حسابداری لایفو و فایفو و مقدار میانگین برای موجودی ریالی و موجودی تعدادی و... و...) اگر نیاز به تریگرهای دیتابیسی باشد، خوب میتوانید استفاده کنید، مشکل یا محدودیتی وجود ندارد.
    موفق باشید.

  7. #7
    پروفشنال
    تاريخ عضويت
    Nov 2007
    پست ها
    546

    پيش فرض

    بسم الله الرحمن الرحیم
    درخصوص موجودی انبار هم بسته به شرایط مختلف نرم افزاری (تعداد انبار و محاسبات حسابداری لایفو و فایفو و مقدار میانگین برای موجودی ریالی و موجودی تعدادی و... و...) اگر نیاز به تریگرهای دیتابیسی باشد، خوب میتوانید استفاده کنید، مشکل یا محدودیتی وجود ندارد.
    با عرض سلام و قبولی طاعات
    منظورم این بود که فیلد موجودی انبار رو در بانک ذخیره کنیم یا هر بار که نیاز شد اون رو محاسبه کنیم؟
    با سپاس فراوان

  8. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    ازنظر سرعت و بازدهی، همانطور که اشاره کردید، شاید بد نباشد که مواردی از این دست در دیتابیس نگه داری شوند و توسط تریگر بروز بودن آنها تضمین گردد.
    در کل باید بسته به شرایط این موارد را سنجید و تعداد Write در مقابل تعداد Read را در نظر گرفت و تصمیم مناسب را اتخاذ کرد.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •