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

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




صفحه 1 از 3 123 آخرآخر
نمايش نتايج 1 به 10 از 21

نام تاپيک: SPInsert

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

    14 SPInsert

    با سلام
    من برای ذخیره کردن رکورد از یک رویه ذخیره شده استفاده کردم. متوجه شدم که به ازای تک تک فیلدها باید یک پارامتر بفرستم. در ضمن من به ازای هر جدول در پایگاه داده یک کلاس طراحی کردم و تمام اتربیوت ها و متدها را برای هر کدام تعریف کردم.

    حالا سوال من این است که اگه قرار بود برای هر کدام از فیلدها پارامتر با نوع و اندازه تعریف کنم پس کاربرد اتربیوت هایی که در کلاس تعیین کردم چه می شود؟

    sqlCommand sqlCmd;
    sqlcmd.commandType=CommandType.storedProcedure;
    sqlParameter param=sqlCmd.Parameters.add("@id_send");//تعریف پارامتر
    param.value=this.id_send;
    //استفاده از اتربیوت کلاس

    من در تعریف پارامتر از ذکر نوع و اندازه صرفه نظر کردم.

    دوستان بفرمائید راهی وجود دارد که من از پارامتر استفاده نکنم و مستقیما از اتربیوت های کلاس استفاده کنم؟چون منطقی به نظر نمیرسه که با تغییر پایگاه داده هم پارامترها را تغییر بدم و هم اتربیوتهای کلاس را!!!

    در ضمن زبان برنامه نویسی سی شارپ و ویژوال استودیو 2008
    Last edited by shotok; 15-04-2011 at 18:50.

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

    پيش فرض

    سلام
    من منظورتان را از Attrribute ها و ارتباط انها با مسئله ای که مطرح کردید متوجه نمیشوم.
    در کل پایه ارتباط دات نت با دیتابیس تعریف Connection و Command و DataReader و اضافه کردن تک تک پارامترها به همان سختی است که شااره کردید!!!

    ولی دات نت سه لایه مختلف ارتباط با دیتابیس روی این روش پایه کشیده تا ارتباط با دیتابیس را هرچه بیشتر ساده کند.
    - روش اول استفاده از DataSet و DataAdapter است.
    این قدیمی ترین روش است و تنها روشی است که در Framework2 پشتیبانی شده.

    - روش دوم LINQ to SQL است.
    روش بسیار ساده و روانی است ولی برای کارهای خاص و پیچیده جواب نمیدهد و فقط هم مختص ارتباط با SQL Server است.

    - روش سوم Entity Data Model است.
    در حال حاضر بیشتر مورد توجه برنامه نویسان قرار گرفته.

    ==============

    این سه روش با ساده ترین شکل ممکن و اغلب حتی با یک گرفتن-کشیدن-رهاکردن ارتباط و اشیای لازم را تشکیل میدهند و به راحتی در کد قابل استفاده هستند.

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

    پس چه بهتر کتاب چاپ جدیدی با عنوان ADO.Net تهیه کنید (که ناشرهای مختلف با این عنوان چاپ داشتند) تهیه کنید و ضمن مطالعه عملاً کار با انها را تجربه کنید.
    موفق باشید.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


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

    پيش فرض

    سلام
    من منظورتان را از Attrribute ها و ارتباط انها با مسئله ای که مطرح کردید متوجه نمیشوم.
    استاد از اینکه وقت گذاشتید سپاسگزارم

    همان طور که خدمتتان عرض کردم با توجه به مباحث شی گرایی من به ازای هر جدول در پایگاه داده یک کلاس در aspدر نظر گرفتم و به ازای هر فیلد یک property.
    در تعریف property ها نوع آنرا تعریف کردم. حالا قرار شده از این کلاس به عنوان واسط بین فرم و پایگاه داده استفاده کنم یعنی اگر قرار است که چیزی از فرم در پایگاه داده درج کنم مقادیر property های متناظر را مقداردهی کرده و آنها را پاس دهم.
    حالا سوال من این است که ado.net باید راه کاری در نظر گرفته باشد که من برای پاس دادن پارامترها بتوانم از property های متناظر استفاده کنم و نیازی به تعریف مجدد Parameter نداشته باشم.

    من نگران اینم که شاید یا من مفاهیم پایه ای شی گرایی را نفهمیده باشم و یا ADO.NET را؟؟؟
    Last edited by shotok; 17-04-2011 at 17:21.

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

    پيش فرض

    سلام
    حالا سوال من این است که ado.net باید راه کاری در نظر گرفته باشد که من برای پاس دادن پارامترها بتوانم از property های متناظر استفاده کنم و نیازی به تعریف مجدد Parameter نداشته باشم.
    بله این راه وجود دارد!
    همانطور که گفتم نامش LINQ to SQL و Entity Data Model است!
    این ابزار پا را در راحتی شما فراتر هم گذاشته، چطور؟
    شما فرمودید که کلاسهایی با Property متناظر هر فیلد و... درست کردید؟
    شما فقط کافیست یک شی متناظر LINQ to SQL یا Entity Data Model به پروژه خود اضافه کنید و بعد با چند کلیک ساده خود دات نت کلاسی با Property هایی متناظر هر فیلد و واحدهای ساختمانی ارتباطی و... تشکیل میدهد، حتی شما حتی نیازی به تعریف آن کلاس را هم نخواهید داشت.
    در حاضر حاضر کمی کار دارم ... شما یک امتحان و کوششی بفرمائید، (Project->Add New Item) اگر به نتیجه نرسیدید، برایتان یک نمونه ساده ارتباط با دیتابیس با سه لایه فوق الذکر خواهم ساخت.
    موفق باشید.

  6. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


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

    پيش فرض

    سلام

    بله این راه وجود دارد!
    همانطور که گفتم نامش LINQ to SQL و Entity Data Model است!
    این ابزار پا را در راحتی شما فراتر هم گذاشته، چطور؟
    شما فرمودید که کلاسهایی با Property متناظر هر فیلد و... درست کردید؟
    شما فقط کافیست یک شی متناظر LINQ to SQL یا Entity Data Model به پروژه خود اضافه کنید و بعد با چند کلیک ساده خود دات نت کلاسی با Property هایی متناظر هر فیلد و واحدهای ساختمانی ارتباطی و... تشکیل میدهد، حتی شما حتی نیازی به تعریف آن کلاس را هم نخواهید داشت.
    در حاضر حاضر کمی کار دارم ... شما یک امتحان و کوششی بفرمائید، (Project->Add New Item) اگر به نتیجه نرسیدید، برایتان یک نمونه ساده ارتباط با دیتابیس با سه لایه فوق الذکر خواهم ساخت.
    موفق باشید.
    از راهنمایی شما بینهایت سپاسگزارم.
    موردی که فرموده بودید امتحان کردم ولی متاسفانه هنوز متوجه مفهوم سه لایه نشدم!!!!!!

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

    پيش فرض

    سلام
    میبخشید کمی سرم شلوغ بود (سایت شخصی هم را هم سرورش را داشتم عوض میکردم...) بحرحال میبخشید ...
    انشاا... قبل پایان هفته جاری سمپلی شامل هر سه مورد فوق با گراید و Insert خارج گراید برایتان آپلود خواهم کرد.

  9. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


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

    پيش فرض

    سلام



    نمونه کد استفاده از سه پلتفرم ارتباطی فوق که در جهت یکسان بودن فرم ها و عدم Copy و Paste کمی با چاشین شی گرایی مخلوط شده ولی کد واضحی دارد.
    - در مدل DataSet و Entity که توانایی استفاده از SP ها مهیا بوده از سه SP در دیتابیس برای Update و Delete و Insert استفاده شده.
    - مدل DataSet در زمان باز شدن پنجره نیاز حتمی به عمل بازگذاری و کلیک دکمه Load دارد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  11. 3 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


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

    پيش فرض

    سلام



    نمونه کد استفاده از سه پلتفرم ارتباطی فوق که در جهت یکسان بودن فرم ها و عدم Copy و Paste کمی با چاشین شی گرایی مخلوط شده ولی کد واضحی دارد.
    - در مدل DataSet و Entity که توانایی استفاده از SP ها مهیا بوده از سه SP در دیتابیس برای Update و Delete و Insert استفاده شده.
    - مدل DataSet در زمان باز شدن پنجره نیاز حتمی به عمل بازگذاری و کلیک دکمه Load دارد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با سلام
    از اینکه وقت گذاشتید بینهایت سپاسگزارم انشاالله عاقبت بخیر بشید
    متاسفانه وقتی فایلتون رو تو vs اجرا میکنم برنامه اجرا نمیشهو فرم ها هم به صورت کد نمایش داده میشه

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

    پيش فرض

    سلام
    اشاره کوتاهی کردم، فکر کردم کافی است و متوجه میشوید...
    فرم های این برنامه با شرایط وراثتی خاص نوشته شده که به حداقل کد نیاز دارد و بهترین اطمینان را دارد ...
    شما فقط باید frmMain و frmBaseChild را باز کنید و کنترل هایش را ویرایش کنید.
    به هیچ وجه نباید frmMain های سه شاخه فرعی دبل کلیک شود، چون نیازی نیست.

    به فرم frmBaseChild و کدهایش دقت کنید.
    این کلاس رویدادها را به سادگی هندلر کرده و چهار تابع را برای کارش فراخوانی میکند که فاقد هرگونه کدی هستند.
    کد این چهار تابع بعداً در سه frmMain سه زیر بخش نوشته شده...
    یعنی سه frmMain سه زیربخش فقط و فقط شامل کد این چهار تابع است.

    مثلاً در واقع اگر کد DataSet/frmMain با کد frmBaseChild تلفیق شود، با هم تشکیل کد فرم بخش DataSet را میدهند.
    یک وراثت ساده است که باعث شده کد مشترک frmBaseChild به جای انکه سه بار نوشته شود، یک بار نوشته شده و سه بار استفاده شود.

    تابع GetDataSource منبع داده های برای تحویل به DataGridView.Datasource میگیرد.

    تابع OnLoadDatabase اطلاعات جاری را مجدد از دیتابیس میخواند.

    تابع OnSaveDatabase اطلاعات در RAM و آخرین تغییرات را در دیتابیس اصلی ذخیره میکند.

    تابع OnAddDatebase یک سطر جدید در دیتابیس ایجاد میکند.

    در واقع کد frmBaseChild اصلاً مهم نیست! چون کد UI است! کد کنترلها و کلیک و...
    شما کافی است کدهای DataSet/frmMain و Entity/frmMain و LinqToSql/frmMain و چهار تابع فوق را را فقط نگاه کنید.
    در واقع این وراثت بجز جلوگیری از تکرار کد، کدهای بیربط را هم در frmBaseChild جدا کرده، تا شما فقط کدهای اصل Save و Load و... را در سه فایل به طور مجزاشده بتوانید مشاهده کنید.

    با خواندن مجدد توضیحات فوق، ببینید میتوانید متوجه شوید؟ اگر از جنبه این مکانیزم وراثتی مشکلی داشتید و در فهم کد همچنان مشکلی داشتید... چاره ای نیست، بفرمائید، کد مشترک را هم سه بار کپی میکنم و سه فرم مجزا تولید میکنم که شرایط وراثتی برای کدمشترک نداشته باشند.
    موفق باشید.

  14. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


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

    پيش فرض

    با سلام
    اگه امکان داره بیشتر توضیح بدید. لطفا فرم های همراه با کنترل (اعم از باتوم و ...) با پسوند resx رو هم ضمیمه کنید که به فهم بیشتر کمک کند
    پیشاپیش تشکر میکنم

صفحه 1 از 3 123 آخرآخر

Thread Information

Users Browsing this Thread

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

User Tag List

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

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