برنامه نویسی linq در دات نت
نمایش نتایج: از شماره 1 تا 3 , از مجموع 3

موضوع: برنامه نویسی linq در دات نت

  1. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض برنامه نویسی linq در دات نت

    - LINQ چیست؟ - LINQ چه عملی انجام می دهد؟ - چگونه می توان از LINQ استفاده کرد؟ - چرا LINQ بوجود آمده است؟ - چه نوع استفاده هایی دارد؟

    مقدمه
    اینها سوالاتی بودند که وقتی برای اولین بار نام LINQ را شنیدم ، برایم مطرح شده بود و نمی دانستم از کجا شروع کنم و اصلا چرا باید به LINQ مهاجرت کنم. مگر چه مزیتی بر ADO.net یا سایر تکنولوژیهای .Net دارد. اما از آنجا که بنا به درخواست مجبور به استفاده از LINQ در یکی از پروژه ها بودم ، بناچار یادگرفتم که چکار باید بکنم. شما اگر از این مقاله استفاده کنید می توانید مشکل خود را در آشنایی و استفاده از LINQ رفع کنید و اگر فرصت شد بحث های پیشرفته را هم عنوان خواهم کرد. نکته مهم: همینجا می گویم این مقاله هیچ ربطی به هیچ کتاب یا مقاله یا MSDN یا هیچ مرجعی ندارد و فقط دیدگاه و نحوه برنامه نویسی بنده با این تکنولوژی در C#.net می باشد. حالا درست یا غلط بماند، مهم این است که این دیدگاه بنده از LINQ ، جواب داده و مشکلی برایم پیش نیاورده و نیازهایم را برطرف می کند. LINQ چیست؟ مایکروسافت در .net 3.5 تکنولوژی جدیدی را تحت عنوان LINQ معرفی کرد که کاملا" بر اساس شی گرایی و ایجاد نمونه از کلاسهای مختلف می باشد. آنچه من درک کرده ام این است که با استفاده از این تکنولوژی شما می توانید از همه چیز ،نمونه بسازید و خواصیتها آنرا استفاده کنید. اصلا چرا نمونه می سازیم؟ خیلی ساده بگویم. برای اینکه از خاصیتهای آن کلاس با استفاده از آن شیئ ایجاد شده در جاهای مختلف استفاده کنیم!!! (که چکار کنیم؟) که با استفاده از خواصیتها بتوانیم برنامه نویسی پویا و شیئ گرایی داشته باشیم که اشیاء را در جاهای مختلف استفاده کنیم. اما اینکه LINQ برای چه بوجود آمده؟ من تابحال برای نوشتن یک insert در بانک اطلاعات منابع مختلفی را صدا می زدم اما در حال حاضر تنها یک فیلد نام را در DATABASE ذخیره می کنم: ADO.NET using System.Data.SqlClient;

    string ConnectionStr = "Data Source=;Initial Catalog=speer1;integrated security=true";

    string commandStr;

    DataSet dataset;

    SqlDataAdapter adapter;

    SqlCommandBuilder command;

    DataTable table;

    DataRow row;

    commandStr = "select * from tcostumer";

    adapter = new SqlDataAdapter(commandStr, ConnectionStr);

    dataset = new DataSet();

    adapter.Fill(dataset, "tcostumer");

    table = dataset.Tables[0];

    DataRow newRow = table.NewRow();

    newRow["name"] = NameTXT.Text.Trim();

    dataset.Tables["tcostumer"].Rows.Add(newRow);

    command = new SqlCommandBuilder(adapter);

    adapter = command.DataAdapter;

    adapter.Update(dataset, "tcostumer");

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #1 ارسال شده در تاريخ 11th December 2011 در ساعت 11:57

  2. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    استفاده از LINQ :
    Add New Item to project à select data à Linq to SQL (Named MyLinqObj) à
    connect to database à bring the tcostumer table in MyLinqObj
    می خواهم این فیلد را با استفاده از LINQ داخل بانک قرار بدم: using System.Data.Linq.SqlClient;

    MyLinqObj budgetDataContext = new MyLinqObj();

    List<tcostumer> custObj = budgetDataContext.tcostumer.ToList();

    custObj.name = NameTXT.Text.Trim();

    budgetDataContext.tcostumer.InsertOnSubmit(custObj );

    budgetDataContext.SubmitChanges();


    همین ! در ادامه : شروع برنامه نویسی با LINQ بدون هیچ پیش گفتار در قسمت Solution Explorer می خواهیم آیتم جدیدی اضافه کنیم. از قسمت Data گزینه Linq To DataBase را انتخاب کنید و نام آنرا مشخص کنید مثلا MyLinqObj . با این کار فایل .dbml (تقریبا چیزی شبیه به مدیر ارتباط با پایگاه) به پروژه اضافه میشود. به شکل زیر توجه کنید:

    حالا جداول دیتابیس که قرار است روی آنها تغییراتی اعمال شود به قسمت designer فایل dbml . اضافه می کنیم. (dragging to .dbml ) حال می توانیم وارد کد نویسی شویم. ابتدا باید نمونه ای از این فایل dbml ایجاد کنیم: public DataClasses1DataContext dbContext = new DataClasses1DataContext();

    اضافه کردن به پایگاه داده: NameTable name1 = new NameTable(); // آبجکتی از نام جدول مورد نظر می سازیم

    name1.Name = nametxt.Text; // از تکس باکس اطلاعات را با فیلد های مربوطه در جدول وارد می کنیم

    name1.Tel = Convert.ToInt64(teltxt.Text);

    dbContext.NameTables.InsertOnSubmit(name1); // درپایان اطلاعات جدیدرابه جدول واردمیکنیم

    dbContext.SubmitChanges(); // عملیات پایانی که اطلاعات را ثبت نهایی می کند

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #2 ارسال شده در تاريخ 11th December 2011 در ساعت 11:58

  3. *Mohammad* آواتار ها
    *Mohammad*
    مدیر سابق
    May 2011
    63,336
    22,637
    تشکر شده : 91,444

    پیش فرض

    ویرایش : خیلی مشکل نیست فقط باید یک مقایسه انجام شود با textbox مورد نظر و سپس سایر اطلاعات آن فیلد را با دستورات روتین انتخاب میکنیم.
    NameTable name2 = dbContext.NameTables.Where(p=>p.Name.Trim() == nametxt.Text.Trim()).FirstOrDefault();
    name2.Name = nametxt.Text;
    name2.Tel = Convert.ToInt64(teltxt.Text);
    dbContext.SubmitChanges();


    حذف :
    NameTable name3 = dbContext.NameTables.Where(p=>p.Name.Trim()== nametxt.Text.Trim()).FirstOrDefault();
    dbContext.NameTables.DeleteOnSubmit(name3);
    dbContext.SubmitChanges();



    انتخاب لیستی از اطلاعات ثبت شده از دیتابیس برای اضافه کردن در gridview : List<NameTable> nameList = dbContext.NameTables.OrderBy(p => p.Name).ToList();
    foreach (var item in nameList)
    {
    dataGridView1.Rows.Add(item.Name, item.tel);
    }

    نحوه استفاده از LINQ: در تمام دستورات بالا و سایر دستورات مربوط به ساختار برنامه نویسی با LINQ چند نکته ثابت وجود دارد که با رعایت آنها می توان از این تکنیک به راحتی استفاده کرد: - انتخاب از نام جدول مورد نظر: از نام جدول برای مشخص کردن هدف دستور مربوطه استفاده می کنیم. یعنی نام جدول اعلام می کند که قصد داریم از این قسمت از پایگاه برای انجام عملیات استفاده کنیم چه بصورت تهیه لیستی از اطلاعات ثبت شده یا چه بصورت اعلام سایر فیلدهای مربوط به یک داده مشخص یا ... - تهیه آبجکتی از جدول مورد نظر - اعلام نام شیئی که به ابزار پایگاه ما مرتبط می باشد. یعنی می خواهیم از کدام DataContext استفاده کنیم. - اعلام جدول موجود در آبجکت مربوط به DataContext - شرط انتخاب اطلاعات از جدول در صورت نیاز: میخواهیم بگوییم از جدول مربوطه و مد نظر کدام عناصر را انتخاب کن؟ این کار با یک دستور Where و انتخاب اشیاء آن جدول و مقایسه آن با شرط مورد نظر ما انجام میگیرد یعنی: Where (p => p.FieldName == (Decision)) - اعلام شایر شرطها مثلا مرتب سازی با همان ساختار شرط انتخاب - تهیه لیست یا انتخاب نوع در پایان کوئری به همین سادگی یک query در LINQ ساختیم. بجای آنکه بگوییم : “Select name From NameTable where personelNumber Like =%”+TextBox1.text;


    میگوییم:
    List<nameTable> obj = DataContextObj.nameTable.Where( p=> p.name.Contains(textbox1.text)).toList();


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

    نردبان این جهان ما و منیست
    عاقبت این
    نردبان افتادنیست
    لاجرم آن کس که بالاتر نشست
    استخوانش سخت تر خواهد شکست




    #3 ارسال شده در تاريخ 11th December 2011 در ساعت 11:58

موضوعات مشابه

  1. دانلود آموزش تصویری Using LINQ to SQL in Visual Basic
    توسط secret در انجمن Video Training (آموزشهای تصویری)
    پاسخ ها: 1
    آخرين نوشته: 29th March 2011, 18:26
  2. پاسخ ها: 0
    آخرين نوشته: 12th February 2011, 16:32
  3. مدیریت منابع پردازنده در linq
    توسط p h o e n i x در انجمن آرشیو بخش سخت افزار
    پاسخ ها: 0
    آخرين نوشته: 14th October 2010, 22:49
  4. کتاب الکترونیکی LINQ for visual C# 2005
    توسط Admin در انجمن کتاب های الکترونیک فارسی کامپیوتر
    پاسخ ها: 0
    آخرين نوشته: 22nd March 2009, 05:53
  5. Linq : تحولی بزرگ در کار با داده ( بخش اول )
    توسط secret در انجمن ASP/ASP.net/MSSQL/Access
    پاسخ ها: 0
    آخرين نوشته: 30th December 2008, 12:28

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •