برای یک برنامه حسابداری که عملیات insert , update , delete , search که به طور مستقیم در داخل یک دیتاگرید اتفاق می افتد چیست ؟
اگر با برنامه های اکسسی (MS Access) مخصوصا قدیمی ها که با adp (MS Access Data Project) کار کرده باشند میدونند که شما دقیقا مثل فضای اکسل با دیتابیس ارتباط بر قرار میکنید
دو روشی که من میشناسم :
1- ADO.NET => DataSet and TableAdapter :
در این روش خیلی ساده شما از طریق پنجره DataSource به دیتابیس وصل می شید، یکبار برنامه رو Build می کنید، سپس در سمت چپ جدول رو به صورت Drag&Drop میندازین داخل پنجره تون و دیتاگرید رو آماده با کد پس زمینه که در یزر گذاشتم میذاره , و فقط کافیه شما از طریق DataSet با دستور GetChanges دیتاتون رو سیو کنید. یعنی خودش کویری های مربوط به اون رو مسیازه و تمام !
private void LoadData()
{
nOTELBOOKDBDataSet = ((SIMPLE_MVVM.NOTELBOOKDBDataSet)(this.FindResource("nOTELBOOKDBDataSet")));
// Load data into the table PERSONEL. You can modify this code as needed.
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)
{
//Data has changes.
//use update method in the adapter. it should update your datasource
int updatedRows = nOTELBOOKDBDataSetPERSONELTableAdapter.Update(changes);
nOTELBOOKDBDataSet.AcceptChanges();
}
}
2- Entity Framework =>SqlQuery :
در این روش هم یک مدل سی شارپ از دیتابیس میسازه و شما با اون مدل میتونید با Entity ها و دستورات SaveChanges البته با کد نویسی بیشتر اطلاعات رو دستی ذخیره کنید ولی شما احتمالا توی این روش با مدل داده ای سی شارپ کار می کنید یعنی LINQ , ولی وقتی از همین روش منتها با استفاده از دستورات اصلی اس کیو ال (Raw SQL) کار کنید میبینید که چقدر روش LINQ خیلی کند هست نسبت به SQL Query
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);
}
}
}
با توجه به نیاز سادگی و راحتی در پیاده سازی و کد نویسی و همچنین سرعت , کدام روش بهتر است ؟
هر دو روش کارایی های خودشون رو دارند , اما خب Entity Framewoek جدید تر هست و مدیریت خطا توی اون راحت تر است
اما شما میتونید از ترکیب هردو استفاده کنید , در جاهایی که نیاز به کوئری های پیچیده دارید ADO راحتر خواهد بود
یک ابزار کوچکی هم نوشتم که میاد باتوجه به کوئری شما مدل سی شارپ رو از روی نتیجه اون کوئری تون میسازه :
Automatic Generate CSharp Model Of Sql Server Table in C# WPF
در انتهای همین پست داخل این لینک سورسش هم هست
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1172
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
617
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
373
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
335
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4294
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4299
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3898
- پاسخ :
5
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
473
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
948
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|