دسته بندی ها
00:15 1401/10/18

مقایسه بین ORM های ADO و Entity برای کار با دیتاگرید در WPF

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : Sql Server Entity Framework Ado.Net

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2364
1 نظر
fateme : اگر شما به هر دو ORM مسلط هستید قطعا انتیتی فریم ورک ساده تر هست. کدهای کمتری می نویسید و بسیاری از دستورات و توابع از قبل آماده داره که توانایی زیادی به شما میده. اما از لحاظ سرعت ADO سریعتر هست چون در این روش دستورات Sql مستقیم در خود دیتابیس اجرا میشه و نتایج برگردونده میشه. حالا اینکه از کدوم روش استفاده بشه بستگی به شما داره.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 10:18 1401/10/21
هوش مصنوعی

پاسخ هوش مصنوعی

برای برنامه حسابداری که عملیات insert، update، delete و search به طور مستقیم در داخل یک دیتاگرید انجام می شود، انتخاب بین ADO.NET و Entity Framework به نیازها و اولویت های پروژه شما بستگی دارد.

ADO.NET به دلیل سادگی در راه اندازی و استفاده و همچنین سرعت بیشتر برای عملیات داده ای که به طور مستقیم با دیتابیس ارتباط برقرار می کند، می تواند گزینه بهتری برای پیاده سازی هایی باشد که انتظار دارند عملکرد سریع تری داشته باشند. با استفاده از DataSet و TableAdapter، می توانید به سرعت داده ها را بارگذاری کرده و تغییرات را ذخیره کنید، بدون نیاز به نوشتن کد پیچیده.

 private void LoadData()
{
    nOTELBOOKDBDataSet = ((SIMPLE_MVVM.NOTELBOOKDBDataSet)(this.FindResource("nOTELBOOKDBDataSet")));
    nOTELBOOKDBDataSetPERSONELTableAdapter = new SIMPLE_MVVM.NOTELBOOKDBDataSetTableAdapters.PERSONELTableAdapter();
    nOTELBOOKDBDataSetPERSONELTableAdapter.Fill(nOTELBOOKDBDataSet.PERSONEL);
    System.Windows.Data.CollectionViewSource pERSONELViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("pERSONELViewSource")));
    pERSONELViewSource.View.MoveCurrentToFirst();
}
void SaveData()
{
    NOTELBOOKDBDataSet changes = (NOTELBOOKDBDataSet)nOTELBOOKDBDataSet.GetChanges();
    if (changes != null)
    {
        int updatedRows = nOTELBOOKDBDataSetPERSONELTableAdapter.Update(changes);
        nOTELBOOKDBDataSet.AcceptChanges();
    }
}

از سوی دیگر، Entity Framework قابلیت های بیشتری برای کار با داده ها ارایه می دهد. با استفاده از LINQ و مدل سازی شی گرا، می توانید به راحتی داده ها را مدیریت کنید، و این روش مناسب تر برای پروژه هایی است که نیاز به قابلیت های پیشرفته تری مانند lazy loading یا ارتباطات پیچیده بین موجودیت ها دارند. اما در این روش، ممکن است نیاز باشد که کد بیشتری برای انجام عملیات مختلف نوشته شود و عملکرد آن نسبت به ADO.NET ممکن است کمتر باشد.

 public void LoadData()
{
    using (DataModeling.Entities dbms = new DataModeling.Entities())
    {
        var RES = dbms.Database.SqlQuery<HUMANS_TBMODEL>("SELECT ID,NAME,TEL,REMARKS FROM PERSONEL").ToList();
        foreach (var item in RES)
        {
            MY_ALL_HUMANS.Add(item);
        }
    }
}

در نهایت، اگر سادگی و سرعت برای شما در اولویت است، ADO.NET ممکن است بهترین گزینه باشد. اما اگر به دنبال کد تمیزتر و قابلیت های پیشرفته تر هستید، Entity Framework می تواند انتخاب مناسب تری باشد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mojtabahakimian 10:36 1401/10/21

هر دو روش کارایی های خودشون رو دارند , اما خب Entity Framewoek جدید تر هست و مدیریت خطا توی اون راحت تر است 

اما شما میتونید از ترکیب هردو استفاده کنید , در جاهایی که نیاز به کوئری های پیچیده دارید ADO راحتر خواهد بود

 

یک ابزار کوچکی هم نوشتم که میاد باتوجه به کوئری شما مدل سی شارپ رو از روی نتیجه اون کوئری تون میسازه :

 

Automatic Generate CSharp Model Of Sql Server Table in C# WPF

در انتهای همین پست داخل این لینک سورسش هم هست

ویرایش شده در سه شنبه 27 دی 1401 ساعت 01:22:49
به این پاسخ امتیاز بدهید    0
امتیاز: 155 رتبه: 10
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود