-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
یه سوال از استادان بزرگوتر.....
من درمورد entity Framework دارم کتاب آقای راد رو میخونم
میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?
به نظر خودم که model First خیلی روش بهتریه چون اول مدلت رو تعریف میکنی و تمام طراحیاتو انجام میدی و بعدش خودش برات بانک رو طراحی میکنه
اما گفتم شاید این روش برای پروژه های بزرگ جواب نده
میخواستم استادای عزیز تجربه هاشون رو کامل در اینمورد به ما هم منتقل کنند
و باز هم سپاس فراوان
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
noroozifar
سلام
آموزش سوم خیلی سخت بود و هم خیلی عالی خیلی چیزا فهمیدم و خیلی چیزا را یاد نگرفتم
کدها را مانند کدهای آقای مدیر سعی کردم بنویسم اما باز مشکل داشتم
در قسمت طراحی بانک اگر به اشتباه فیلدی را تعریف کرده و می خواهم تغییرات اعمال کنیم دوباره و ذخیره کنیم با پیغام ذخیره ای روبه رو می شویم که savetext داره حتما متوجه شدید کدام پیغامه اون را داخل sql server 2008 یک تیک داشت که بر میداشتی دیگه این پیغام نمیاد اما از داخل داخل ویژوال استودیو نمیدونم به چه طریق ؟
هنگامیکه تغییری روی ساختار جداول Local Database تون می دین ویا موارد مشابه بطور پیش فرض VS اجازه نمی ده ذخیره بشه برای اینکه VS از ذخیره جلوگیزی نکنه باید تیک مورد زیر را بر دارید:
Tools->Options->Prevent saving changes that require table re-creation
نقل قول:
2. دومین مشکل من سر همین Attach و Detach خیلی سخته تا مفهوم درک کنم شاید به دلیل اینه که من از ساختار struct درک درستی ندارم همچنین این get و set همیشه استفاده میکنم اما هیچ موقعه نفهمیدم چی هستند :قهقهه:
وقتی موجودیتی در objectContex قرار دارد OC هوشمندانه تغییرات آن را متوجه شده و با SaveChanges در DB ذخیره می کند. Attach موجودیتی رو به Context اضافه می کند و Detach خارج می کند. برای کار با EF حتما باید مفاهیم رو خوب بلد باشید (کتاب بخونید) احتمالا در آبنده به آموزش EF خواهم پرداخت
نقل قول:
1. دیتا گرید به bsorderdetails متصل کردم اما productName نیامد تو ستون های گرید؟
ستون را به چی Bind کردید چک کنید متوجه می شید!!!
نقل قول:
2. اخرش تو قسمت AddProductToCurrentOrderDetail به مشکل بر خوردم که نفهمیدم چه کنم
چه مشکلی؟
نقل قول:
نوشته شده توسط
masoud_z_65
یه سوال از استادان بزرگوتر.....
من درمورد entity Framework دارم کتاب آقای راد رو میخونم
میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?
به نظر خودم که model First خیلی روش بهتریه چون اول مدلت رو تعریف میکنی و تمام طراحیاتو انجام میدی و بعدش خودش برات بانک رو طراحی میکنه
اما گفتم شاید این روش برای پروژه های بزرگ جواب نده
میخواستم استادای عزیز تجربه هاشون رو کامل در اینمورد به ما هم منتقل کنند
و باز هم سپاس فراوان
این دو مورد به لحاظ کار با DataBase فرقی نمی کنند. مطمئن باشید برای پروِژه های بزرگ جواب می ده وگرنه من و امثال من هیچ وقت وقتمون رو صرفش نمی کردیم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?
به نظر من Code First
-
1 ضمیمه
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
ستون را به چی Bind کردید چک کنید متوجه می شید!!!
من کلا قسمت دیتا سورس دیتا گرید را به bsOrderDetails قرار داده ام و خود bsOrderdetail قسمت دیتا سورس را به models.orderDetails داده ام ولی ستون prodoctname نداشت
نقل قول:
. اخرش تو قسمت AddProductToCurrentOrderDetail به مشکل بر خوردم که نفهمیدم چه کنم
این هم مشکل که کدها و خطا در یک فایل تکست زمینه کردم :
ضمیمه 80610
کل کدها و فایلها در لینک قبلی من هستش که منتظرم ببینم کجا و تو چه کدهای اشتباه کردهام یا بهتر کدها را به چه طریق بنویسم؟
کتاب چی بخونم یک کتاب معرفی کنید ؟
با تشکر از مدیر محترم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
از یه برنامه نویس توقع می ره که بتونه دیباگ کنه و مشکلو پیدا کنه! بیشتر سعی کن
کتاب Appress.Pro.Entity.Framework.4.0 رو می تونی بخونی حجمش خیلی کمه
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
خیلی دید زدم متوجه خطام نمیشم ؟:اشتباه:
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
من کدتو دیدم توی اون قسمت مشکلی نداشت!!! به هر صورت بعد از آموزش بعدی کد رو خواهم گذاشت میتونی مقایسه کنی
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام خدمت جناب gwbasic
من یک کوئری با linq نوشتم و مقدار اون و به دیتا سورس dgv پاس کردم ولی در این حالت متد autosort در dgv که بصورت پیش فرض در dgv قرار دارد غیر فعال می شود می خواستم بدونم چطور می تونم با تغییر در نوع کوئری این مشکل رو حل کنم مثلا تبدیل کوئری به دیتاتیبل
البته این مشکل رو من در یک تاپیک جدا هم نقل کردم در صورت اضافه بودن حذف نمائید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
amir3321
با سلام خدمت جناب gwbasic
من یک کوئری با linq نوشتم و مقدار اون و به دیتا سورس dgv پاس کردم ولی در این حالت متد autosort در dgv که بصورت پیش فرض در dgv قرار دارد غیر فعال می شود می خواستم بدونم چطور می تونم با تغییر در نوع کوئری این مشکل رو حل کنم مثلا تبدیل کوئری به دیتاتیبل
البته این مشکل رو من در یک تاپیک جدا هم نقل کردم در صورت اضافه بودن حذف نمائید
اگر کلاسی تعریف کرده (مثلا Person) و لیستی از این کلاس ایجاد کنیم و آن را به DataGridView مان Bind کنیم بدلیل اینکه این لیست قابلیت Sorting را بطور پیش فرض ندارد بنابراین Sort گرید هم (از طریق کلیک کردن روی عنوان ستون) عمل نخواهد کرد. برای حل این مسئله دو راه وجود دارد (و شاید بیشتر) یکی اینکه BindingList خاص تعریف کنیم با قابلیت Sorting که کمی پیچیده هست و راه دیگر که راه ساده تری هست خودمان رویداد ColumnHeaderMouseClick مربوط به DataGridView را هندل کنیم:
private void myDataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn column = myDataGridView.Columns[e.ColumnIndex];
_isSortAscending = (_sortColumn == null || _isSortAscending == false);
string direction = _isSortAscending ? "ASC" : "DESC";
myBindingSource.DataSource = _context.MyEntities.OrderBy(
string.Format("it.{0} {1}", column.DataPropertyName, direction)).ToList();
if (_sortColumn != null) _sortColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
column.HeaderCell.SortGlyphDirection = _isSortAscending ? SortOrder.Ascending : SortOrder.Descending;
_sortColumn = column;
}
منبع
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام
من کد شما رو چک کردم ولی نتونستم ازش استفاده کنم میشه یکم در باره _sortColumn توضیح بدهید که کجا ایجاد می شود و از کجا خوانده می شود این sortColumn_ همانند column می باشد یعنی همان سلول کلیک شده در هدر ان جهت عملیات sort است
من یک نوع column در بیرون و در داخل از متد ایجاد کردم که در هر دو حالت جواب نگرفتم و فقط شکل عملیات sort در هدر سلول تغییر می کرد
در مورد پاس کردن query که sort شده بوسیله بایندینگ است ایا باید بعد از این عمل دوباره دیتا را در dgv لود کنیم یا خود بایندینگ این عمل رو انجام می دهد
ممنون می شوم یک کم راهنمای فرمایید
bool _isSortAscending = false;
DataGridViewColumn _sortColumn;
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex];
_isSortAscending = (_sortColumn == null || _isSortAscending == false);
string direction = _isSortAscending ? "ASC" : "DESC";
bindingSource1.DataSource = db.part.OrderBy(
string.Format("it.{0} {1}", column.DataPropertyName, direction)).ToList();
if (_sortColumn != null) _sortColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
column.HeaderCell.SortGlyphDirection = _isSortAscending ? SortOrder.Ascending : SortOrder.Descending;
_sortColumn = column;
}
siepoldEntities db = new siepoldEntities();
private void button1_Click(object sender, EventArgs e)
{
var query = from p in db.part
select p;
bindingSource1.DataSource = query.ToList();
dataGridView1.DataSource = bindingSource1.DataSource;
}
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
سلام بر همه دوستان
من یه مشگلی که دارم اینه که پروژه هر کی و اجرا می کنم این خطا رو بهم میده.
The underlying provider failed on Open.
امکان راهنمایی هست؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
notepad
سلام بر همه دوستان
من یه مشگلی که دارم اینه که پروژه هر کی و اجرا می کنم این خطا رو بهم میده.
The underlying provider failed on Open.
امکان راهنمایی هست؟
همیشه وقتی Exception ای اتفاق میافته از پنجره باز شده روی View Details کلیک کنید و Inner Exception رو بررسی کنید تا جزئیات بیشتری از خطا رو ببینید. در صورتیکه در Message مربوط به InnerException خطای A network-related or ... رو می بینید به احتمال زیاد سروسی SQL شما Stop هست و باید آن را Start کنید. روی Start کلیک کرده Run را باز کنید و Services.msc را تایپ کنید در پنجره باز شده SQLExpress را انتخاب کرده و Start کنید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام
استاد خیلی دنبال حل مشکل گشتم ولی تو تمام فرومها این مشکل همینطور پا برجا بود می تونم با ساختن یک datatable و ریختن اطلاعات کوئری بصورت رکورد به رکورد داخل آن بوسیله foreach مشکل رو حل کنم ولی مقداری افت زمانی دارم که البته تا زیر 20الی 30 هزار رکورد قابل ملاحظه در شبکه معمولی نیست ولی بالاتر از اون یکم خودش رو نشون می دهد در روش شما هم هر بار برای sort یک کوئری اجرا مکنه و نتیجه رو به بایندینگ پاس می کنه آیا روش من اصولی بنظر می رسه یا نه
در linq to sql شما در متد کوئری خودتون یک query.copytodatatable دارید و این خیلی راحت این مشکل رو حل می کنه ولی در linq to entity وجود ندارد
خواهشا راهنمایی فرمائید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
amir3321
با سلام
استاد خیلی دنبال حل مشکل گشتم ولی تو تمام فرومها این مشکل همینطور پا برجا بود می تونم با ساختن یک datatable و ریختن اطلاعات کوئری بصورت رکورد به رکورد داخل آن بوسیله foreach مشکل رو حل کنم ولی مقداری افت زمانی دارم که البته تا زیر 20الی 30 هزار رکورد قابل ملاحظه در شبکه معمولی نیست ولی بالاتر از اون یکم خودش رو نشون می دهد در روش شما هم هر بار برای sort یک کوئری اجرا مکنه و نتیجه رو به بایندینگ پاس می کنه آیا روش من اصولی بنظر می رسه یا نه
در linq to sql شما در متد کوئری خودتون یک query.copytodatatable دارید و این خیلی راحت این مشکل رو حل می کنه ولی در linq to entity وجود ندارد
خواهشا راهنمایی فرمائید
30 هزارتا رکورد را لود می کنی میگذاری جلوی کاربر ننه مرده که باحاش چی کار کنه؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
30 هزارتا رکورد را لود می کنی میگذاری جلوی کاربر ننه مرده که باحاش چی کار کنه؟
30 هزار رکورد رقم کوچکی برای unit test می باشد در ضمن موقعی که با ارقام زیاد اطلاعات کار می کنی این رقم ها خیلی کوچیکه بعضی وقتها پیش میاد نیاز به لود این حجم اطلاعات جهت گزارشات و محاسبه داری ولی اولویت در لود اطلاعات جهت کاربر همیشه در paging می باشد
استاد راهنمایی نفرمودید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
در مورد sort کردن داده پشت DataGridView در درجه اول داده هاتون رو از DB خوانده و در لیست قرار می دهید و در سپس لیست رو به BindingSource و در نهایت BindingSource رو به DGV بایند می کنید
برای Sortهم طبق پست قبلی عمل می کنید منتها اون لیست را Sort می کنید (بدیهی هست که نباید دیتا رو دوباره مرتب شده از DB گرفت) البته مرتب کردن لیست چند روش داره که یکیش به صورت زیر هست:
private bool _isSortAscending;
private DataGridViewColumn _sortColumn;
private void dgvCustomer_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewColumn column = dgvCustomer.Columns[e.ColumnIndex];
_isSortAscending = (_sortColumn == null || _isSortAscending == false);
string direction = _isSortAscending ? "ASC" : "DESC";
if(_isSortAscending)
CustomerBS.DataSource = Customers.OrderBy(c => c.GetType().GetProperty(column.DataPropertyName).G etValue(c, null));
else
CustomerBS.DataSource = Customers.OrderByDescending(c => c.GetType().GetProperty(column.DataPropertyName).G etValue(c, null));
if (_sortColumn != null) _sortColumn.HeaderCell.SortGlyphDirection = SortOrder.None;
column.HeaderCell.SortGlyphDirection = _isSortAscending ? SortOrder.Ascending : SortOrder.Descending;
_sortColumn = column;
}
من سر نخ رو بهتون دادم باقیش دیگه با خودتون بود که دقیقا نیازتون رو براورده کنید!!!
در مورد داده های زیاد هم منطقی نیست که کل داده ها رو بخواهید در گرید نمایش بده کاربر نیازی به این همه دیتا نداره! نمی تونه استفاده درستی از داده ها به این شکل ببره. برحسب نیاز می تونید داده ها رو مثلا 100 تا 100 تا به Load کنید Linq این امکانو با استفاده از Skip و Take می ده و یا اینکه امکان جستجو در فرم رو به کاربر بدید که بر اساس یکسری فیلد ها که کاربر پر می کنه داده ها از DBخوانده بشه.
امیدوارم جوابتون رو گرفته باشید و اجازه بدید تاپیک روند خودشو طی کنه
موفق باشید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام خدمت استاد گرامی
از راهنمایی شما بی نهایت سپاسگزارم . اما با اینکه sqlexpress رو هم start کردم بازم به متد savechanges خطایی میده که innerException آن
An error occurred while preparing the command definition. است.
بازم به خاطر زحماتتون ممنون
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
notepad
با سلام خدمت استاد گرامی
از راهنمایی شما بی نهایت سپاسگزارم . اما با اینکه sqlexpress رو هم start کردم بازم به متد savechanges خطایی میده که innerException آن
An error occurred while preparing the command definition. است.
بازم به خاطر زحماتتون ممنون
این خطا فرق می کنه با خطای قبلی پروژتون رو بذارید اینجا ببینم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
سلام
من برنامه رو بر اساس آموزش ها نوشتم و خطایی هم نمیده اما وقتی اطلاعات ذخیره میکنم در مراجعه بعدی به برنامه یا اطلاعات پاک شده و یا بعد از چند بار ورود و خروج پاک میشن.بعد از ریست کامپیوتر هم همین اتفاق میفته.
علتش چیه؟
ممنون
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
Abolfazl.programmer
سلام
من برنامه رو بر اساس آموزش ها نوشتم و خطایی هم نمیده اما وقتی اطلاعات ذخیره میکنم در مراجعه بعدی به برنامه یا اطلاعات پاک شده و یا بعد از چند بار ورود و خروج پاک میشن.بعد از ریست کامپیوتر هم همین اتفاق میفته.
علتش چیه؟
ممنون
منم همین مشکل را داشتم این بر میگرده به ویرایش کد که با هر بار ویرایش کد ویژوال استودیو بانک را ریفرش میکنه اگر می خواهی این مشکل حل بشه باید داخل فایل app محل قرار گرفتن بانک را در Connectionstring به ادرس محل پروزه تغییر بدید .. البته بعد از اتمام کامل پروژه باید دوباره این آدرس را به حالت اول بر گردانی وگرنه پروژه کار نمیکنه الان باید ادرس تقریبا به این حالت باشه داخل فایل app :
<add name="StoreDBEntities" connectionString="metadata=res://*/StoreModels.csdl|res://*/StoreModels.ssdl|res://*/StoreModels.msl;provider=System.Data.SqlClient;pro vider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\StoreDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
من تغییرش دادم به این :
<add name="StoreDBEntities" connectionString="metadata=res://*/StoreModels.csdl|res://*/StoreModels.ssdl|res://*/StoreModels.msl;provider=System.Data.SqlClient;pro vider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Store\Stor eDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
حالا مشکل حذف رکوردهای که برای تست ایجاد کردم ندارم و در نهایت که پروژه کامل شد ان را به صورت اول بر میگردانم اگر اینکار انجام نشود کل پروژه بهم میریزه
چند پست قبل هم آقای مدیر توضیح داده اند می تونی بر گردی ببینید
-
5 ضمیمه
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
سلامی مجدد خدمت استاد گرامی
ببخشید اگه کمی دیر شد...
فقط این نکته رو بگم که چون متد savechanges مشکل داشت فعلا توی فورم customer هستم
:لبخندساده:
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
استاد ما منتظر ادامه آموزش هستیم میشه یک لطفی بکنید و درباره نحوه بکارگیری dialogresult جهت دریافت اطلاعات از فرم دوم یکم توضیح بدهید چون هنوز سورس دوتا ویدیو اخر رو نزاشتید من نتونستم این موضوع روخوب بفهم اگه خواستیم چند رکورد رو انتخاب کنیم چطور یعنی به حالت یک لیست از رکورد ها شاید من درست متوجه نشدم .
با تشکر
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
Error 1 Error 2019: Member Mapping specified is not valid. The type 'Edm.Guid[Nullable=False,DefaultValue=]' of member 'id' in type 'moshakhasatdbModel.moshtb' is not compatible with 'SqlServer.int[Nullable=False,DefaultValue=,StoreGeneratedPattern =Identity]' of member 'id' in type 'moshakhasatdbModel.Store.moshtb'. E:\formmoshakhasate gozinesh\frommoshakhasat\WindowsFormsApplication1\ Model1.edmx 46 13 WindowsFormsApplication1
با سلام من وقتی می خوام از guid استفاده کنم به این مشکل می خورم می خوام به یک عدد int که اینکریس منت شم یک یک گذاشتم بره بالا می خوام مقدار بدم ولی به صورت اتوماتیک چی کار کنم میشه راههنماییم کنید مرسی خیلی گنگ توضیح دادم میدونم ولی ترجمه وکمکم کنید دی مخم جواب کرده بازم مرسی
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
ببخشید دوستان که هنوز نتوستم آموزش بعدی رو آماده کنم. فعلا انرژی لازم رو برای ادامه کار ندارم تا مدتی شاید نتونم مطلب آموزشی جدیدی بذارم!!!
@notepad : کد شما بدرستی اجرا میشه! مشکلی نداره
@soroush_man_hd : برای مشخص کردن کلید اصلی باید از یک تایپ استفاده کنید Guid یا int . اگر Guid انتخاب کردید باید سمت database جنس کلید اصلی رو uniqueidentifier انتخاب کنید
مشکل شما اینجاست که سمت database کلید اصلی رو int انتخاب کردید و در مدلتون Guid انتخاب کردید که به هم نگاشت نمی شوند.
باز هم عذر خواهی می کنم از همه دوستان
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
ببخشید ادامه این اموزشها چی شد .... ان شالله که دم عید هست یک اموزش خوب بذارید
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
سلام دوباره
اقای مدیر من امروز برنامه فرم product را اجرا کردم و یک مشکل هست زمانی که مقادیر را وارد میکنیم و مقدار price که در ابتدا 0 هستش را پاک میکنیم و به جای ان حروف مثلا a به جای عدد وارد میکنیم و بر روی ذخیره کلیک میکنیم عمل ذخیره بدون پیغام خطا انجام میشه در صورتیکه نوع ما از نوع int هستش پس چرا کاراکتر قبول کرد و پیغام خطا نداد البته داخل بانک چیزی ذخیره نمی شود ؟؟؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
فیلم هایی که برای آموزش گذاشتین توی:
https://barnamenevis.org/showthread.p...AD%D9%84%D9%87
همه فیلترن!
جای دیگه میشه آپلود کنین؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
ببخشید اموزش قسمت سه لایه را نمیدید با استفاده از این روش
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
فکر نمی کنم دیگه بتونم این تاپیک رو ادامه بدم چون کاملا یک طرفه پیش می ره و کسی مشارکت نمی کنه و من هم فرصت و زمان کافی متاسفانه ندارم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
خوب ما که تا اینجا جلو امدیم باید چه کار کنیم ؟؟؟؟ کجا را مطالعه کنیم برای یادگیریش ؟ پست شماره 127 را یک نگاه بندازید پاسخ اون سئوالم هنوز مانده
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
سلام.
من یه اشکال تو پروژ] دیدم.گفتم بگم شاید رفع شه.
اگه تو فرم Customerچند تا مشتری وارد کنی و بعد اونا رو حذف کنی و هیچی تو دیتاگرید ویو نباشه طبق قانونی که خودتون گفتید باید فقط کلید جدید فعال باشه که اینطور نیست.همین
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام من یک هفته ای میشه که کار رو EF رو شروع کردم. شکر خدا با کمک دوستان تونستم کدهایی رو که همیشه تو پروژه هام داشتم رو پیاده سازی کنم .فقط دو تا سوال باقی موند که دوستان منو به این تاپیک ارجاع دادن.که با بررسی تاپیک های مربوطه سوالات زیادی به ذهنم اومد و البته چند تا اررور تو پروژه؟احیانا دوستان پروژه کامل این بحث رو ندارن؟ممنون از دوستانی که این تاپیک ها رو راه میندازن
اجازه بدین چندتا از سوالتمو همین جا بپرسم؟
1-من از navigator استفاده نمی کنم و خودم با دکمه این روش رو پیاده سازی میکنم.که البته تو EF به مشکل خوردم.توتاپیک هامدیر navigator رو بهتردونستن .ایا برای پروژه های تجاری navigator از نظر ظاهر تو دید کاربر مشکل نداره؟
2-تو روش کلاسیک چند لایه کار میکردم .بعد از کار با با EF احساس کردم به دلیل جلوگیری از کندشدن سرعتو اینکه کدها خواناتراز روش کلاسیک هستند ، دیگه نباید از این روش استفاده کرد.الان برام سواله واقعا چندلایه بودن اینجا مفیده؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
notepad
سلامی مجدد خدمت استاد گرامی
ببخشید اگه کمی دیر شد...
فقط این نکته رو بگم که چون متد savechanges مشکل داشت فعلا توی فورم customer هستم
:لبخندساده:
من اینارو دانلود کردم .همون فایلهایی بود که مدیر تو آموزش های ابتدایی رو سایت گذاشته بودن درسته؟؟(دوبرنامه تو شروع کار)پس چرا تو چند لینکه؟ من تغییری توش ندیدم؟؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام من این برنامه رو از روآموزش هاش دنبال کردم.من BindingSource رو تو کدتعریف کردم.
1. private void Initialize(Order order)
{
contex = new StoreDBEntities();
if (order == null)
{
this.Order = new Order();
contex.Order.AddObject(this.Order);// add
}
else
{
this.Order = order;
contex.Order.Attach(order);
order.OrderDetail.Load();
}
if (this.Order.Date == DateTime.MinValue)
this.Order.Date = DateTime.Now;
bsOrder = new BindingSource();
bsOrder.DataSource = order;
bsOrderDetail = new BindingSource();
bsOrderDetail.DataSource = bsOrder;
// bsOrderDetails.DataMember = "OrderDetail";
bsCustomer = new BindingSource();
bsCustomer.DataSource = bsOrder ;
// bsCustomer.DataMember = "Customer";
//,false, DataSourceUpdateMode.Never false, DataSourceUpdateMode.OnPropertyChanged
// txt_customer.DataBindings.Add("Text", bsCustomer, "FullName");
}
از DataMember ها خطا میده
2. رووی فرم order برای انتخاب مشتری، رو کلیک دکمه
CustomerForm f = new CustomerForm(); //instance
DialogResult Result= f.ShowDialog ();
if (Result == DialogResult.OK)
{
contex.Customer .Attach (f.SelectedCustomer);
Order.Customer = f.SelectedCustomer;
}
حالا روی فرم مشتری، .اینو نوشتم
Customer customer = new Customer();
public Customer SelectedCustomer
{
get
{
Customer customer = bsCustomers.Current as Customer;
return customer;
}
set { customer =value ; }
}
برای رفرش دیتاگرید چی کارکنم.برای باردوم خطا میده
-
1 ضمیمه
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام . من این پروژه رو از روی آموزش ها ساختم و روی یه تاپیک آپلود کردم و سوالاتم رو پرسیده بودم ولی نمی دونم را مدیران حذفش کردند؟!!!! بهتره همین جا بزارمش
فرم ثبت سفارش مشکل داره :آموزش فایل آخر.برام مهم نیست دوستان دیتاست ها رو روی فرم یا تو کد معرفی کنند . خلاصه مهم اینه که گرید اطلاعات رو نشون بده و سفارش ثبت بشه(حتی تو حالتی که در فایل های آموزشی بود bsOrder تو کد معرفی شده بود حالا چه تو گرید رو تو محیط دیزاین به dsOrder Detail که البته Datasource اون bsorder بودband کرده بودند؟) تا یادم نرفته برای انتخاب مشتری یه دکمه رو فرم کاستومر گذاشتم فعلا دوستان از همون دکمه استفاده کنند
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با سلام من خیلی سرچ کردم دوستان لطف کنند مارو هم راه بندازند . مشکل اصلی من نمایش اطلاعات توی گرید است.چه طوری وقتی منبع داده اصلی ما که dsorder است تو محیط کد معرفی شده ، روی محیط دیزاین کالمن های گرید رو تونستند به به اون بایند کنند
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باتشکر که سورس رو قراردادید انشاا.. دوستان در نظرسنجی شرکت کنند. فقط یه مشکل هست
اولین رکورد رو درست ثبت میکنه ولی دومین سفارش رو پیغام An error occurred while updating the entries. See the inner exception for details میده.مشکل چیه؟
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
shocraneh
باتشکر که سورس رو قراردادید انشاا.. دوستان در نظرسنجی شرکت کنند. فقط یه مشکل هست
اولین رکورد رو درست ثبت میکنه ولی دومین سفارش رو پیغام An error occurred while updating the entries. See the inner exception for details میده.مشکل چیه؟
ببینید هر وقت با چنین خطایی مواجه شدین به Inner Exception نگاه کنید اونجا احتمالا پیغام دقیقتری می بینید.
مراحلی رو که انجام می دید تا به خطا می خورید رو با جزئیات کامل بنویسید تا من تست کنم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
ممنونم آقای gwbasic لطفا اگه امکانش هست به آموزش ها ادامه بدید تا بلا تکلیف نمونه من که خیلی حال کردم با این آموزش ها خیلی روان و مفید هستش.
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام وتشکر راستش نتونستم خطایابی کنم.
برای باراول که جدول orderdetail خالیه عمل ثبت سفارش رو انجام میده .اما برای ثبت رکورد بعدی(حتی با run مجددپروژه)در قسمت context.SaveChanges خطا میده .خط به خط که میرم هر سه bs مقدار گرفته اند. (البته عمل ویرایش به درستی انجام میشه. )
یه سوال دیگه که برام مطرحه در تابع AddProductToCurrentOrderDetails وقتی میگیم محصول قبلا تو کانتکس نباشه ،مگه معنیش این نیست که برای مشتری جاری این محصول رو انتخاب نکرده باشیم ؟! تو اجراهای من تحت هر شرایطی product = obj as Product اجرا میشه .توجه اگه بکنید متوجه میشید اگه بخایم به لیست سفارش ثبت شده قبلی هم یک قلم دیگه اضافه کنیم ، بعد از انتخاب محصول تو دو تارکورد از گرید محصول رو میزنه و بعد از ثبت سفارش دوباره همون پیغام خطا میاد
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام شرمنده من مدل رو جنریت کرده بودم ولی حواسم به باگ مربوط به تنظیم identity نبود.یه چیز جالبی که بهش برخورد کردم: من id هامو int گرفتم و تو اسکیوال identity کردم . دراین حالت نمی دونم واقعا چرا
sum += orderdetail.Price * orderdetail.Count; با خطا مواجه میشه نوع هردو ورودی int32و خروجی هم int32 معرفی شده .خطا: Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)
2- در OrdersForm_Load:این کدرولطفا توضیح بدید Orders = context.Order.Include("Customer").ToList();
3-سوالم راجع به AddProductToCurrentOrderDetails روهنوز متوجه نشدم(تاپیک قبلی)
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
ببینید یکی از خصوصیات برنامه نویس پیگیر بودن و سمج بودن ولی هیچ وقت نباید مطالعه اصولی فراموش بشه و همیشه الویت ها باید رعایت بشه منظورم اینه که اگه شما یکسری مفاهیم پایه ای رو ندونید در حل مشکلات زمان زیادی رو باید صرف کنید که براتون حتما آزار دهنده خواهد بود.
1- ربطی به identity نداره اگه به متن خطا دقت کنید متوجه می شید موضوع چیه؟ شما احتمالا Count یا Price رو nullable در دیتابیس تعریف کردین که در این صورت هنگام تولید مدل پراپرتی ای از جنس nullable تعریف می شه و باقیه ماجرا
2- کافیه معنی Include رو در EF بررسی کنید و همچنین Lazy Loading
3- با کدی که من بهتون دادم اجرا کنید بعید می دونم اضافه کردن یک قلم به سفارشی که قبلا ذخیره شده اشکالی ایجاد کنه چون وقتی سفارشی Load میشه اقلام سفارش در Context قرار می گیرند. بنابراین نباید مشکلی باشه. اگه این مورد مشکلی داشت با جزئیات بگید تا بررسی کنم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باتشکراز توجهتون .آره خطایابی مسئله مهمیه .من در حدی میدونم که برام پیش اومده وتجربه کردم..آیا منبعی هست که بتونه در این زمینه کمک کنه؟ممنون 1-تودیتابیس تنظیم بودولی تو مدلNullable=nounبود.حالا با Nullable=false یه قسمت دیگه کدهمین خطا رو میده درتابع AddProductToCurrentOrderDetails قسمت od.Price = product.Price.اصلا چرا با وجود اینکه فیلد قیمت مقدار داره باید به نال بودن یا نبودن حساس باشه؟ 2-من این قسمت رو با مقادیر متفاوت اجرا کرده بودم ونتیجه رو هم دیدم.حتی بدون این تکه کد. ولی درک این قضیه که چرا "Customer"جواب درست میده؟ آخه ما لیست سفارش میخایم ،مشتری چرا! 3-به گمونم سوالم رو درست مطرح نکردم .ثبت به درستی انجام میشه منظورم این بود که کدelse context.Product.Attach(product اینجا ضرورتی نداره .(به عبارت بهتر دراینجا هیچ وقت این خط اجرا نمیشه.درسته؟)
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
در فرم Orders لیست سفارشات نمایش داده می شه و هر سفارشی برای یک مشتری هست بنابراین نیاز هست که اطلاعات مشتری برای هر سفارش هم بارگذاری شود تا بتوان آن را نمایش داد ستون مشتری بر اساس مشخصات Customer پر می شه بنابراین نیاز هست که Load بشه
اما در مورد Attach کالا:
اگر Attach انجام نشه Product انتخاب شده در فرم Product به عنوان موجودیت جدید در نظر گرفته می شه و هنگام ذخیره یک رکورد جدید از Product با مشخصات قبلی و Idجدیدی ایجاد می شه پس بنابراین باید Attachکرد تا object service بتونه تشخیص بده که این موجودیت جدید نیست ولی اینکه قسمت elseاجرا نمی شه حق با شماست وقتی TryGetObjectByKey استفاده می شه باعث میشه که ابتدا productدر داخل contextجستجو بشه و اگه موجود نبود اون رو از database می خونه و این باعث می شه که خود بخود Attach صورت بگیره بنابراین نیازی به else نیست البته این مورد دوم که باعث می شه product دوباره از DB خونده بشه زیاد جالب نیست که باید اصلاح بشه ولی کد بدرستی وظیفش رو انجام می ده
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
با تشکر . نمیدونم این تاپیک ها تا کجا ادامه پیدا میکنه و قراره موضوع بعدی چی باشه؟ راستش لیست فازهای پروژه رو که نگاه میکردم ،دیدم فاز 2 گزارش است گزارش باlinq تو همین سایت بحث شده (شکرخدا کدش هم جواب میده).
من تو روش کلاسیک چندلایه کارمیکنم آیا اساتید اجازه میدن من یک فرم با استفاده از چندلایه ای بزارم تا راجع به ایرادات احتمالیش بحث بشه؟ اگه نظرمثبته بگید موضوع فرم جدید چی باشه .پیشاپیش ممنونم
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
از لفظ استاد خواهشا استفاده نکنید من هم مثل شما هستم. در مورد ادامه من انگیزه ای دیگه ندارم اما اگه فعالیتی صورت بگیره موافقم و سعی می کنم همراهی کنم.
پیشنهاد خوبی دادین در مورد چند لایه اگه کدتونو بذارید می تونیم روش بحث کنیم (امیدوارم بقیه دوستان هم همراهی کنند).
-
1 ضمیمه
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام و آرزوی قبولی طاعات وعبادات
قراربود پروژه رو چندلایه بزارم ،اما متاسفانه تو یه سری کدهای اولیه به مشکل خوردم .صلاح رو براین دیدم ابتدا پروژه رو به سبک معمول بزارم تاباکمک دوستان ایراداتش گرفته بشه .بعد همین رو چندلایه کنم.برنامه ابتدا نام مدرس رو ثبت میکنه وبعد برنامه کلاسی مدرس رو مشخص میکنه(دکمه لیست کلاسها)
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
یکی از مواردی که منو واقعا دلسرد کرد از ادامه کار عدم دقت و توجه دوستان بود. تصور می کنم اصلا ویدیویی ندیدن فقط یکسری کد دیدن که دلیلشو نمی دونن برای چی نوشته شده !!!
دوستان این یک پروژه بود که شما طریقه کدنویسی رو در عمل ببینید. و مخاطبینشم برنامه نویس های با تجربه هست نه کسی که به لحاظ فنی در سطح پایینی قرار داره. برنامه نویس با تجربه برنامه نویسی هست که به تکنولوژی های مختلف آشنا هست مثل ADO.NET , Entity framework , Nhibernate و سوکت پروگرامینگ و چه می دونم هر چیزی که شما فکرش رو بکنی. اما یک برنامه نویس با تجربه لزوما یک برنامه نویس حرفه ای و قدرتمند نیست.یک برنامه نویس حرفه ای لزوما چه می دونم WPF نمی دونه و یا هزارو یک چیزه دیگه در عوض برنامه نویس حرفه ای اصول برنامه نویسی رو می دونه. اون می دونه که اصول کد نویسی چی هست. اون به ساده ترین شکل ممکن کد می نویسه. کدی که می نویسه برای هر کسی قابل فهم هست و اصول SOLID رو کاملا آگاه هست Design pattern ها رو به خوبی می دونه و می دونه که چه زمانی باید ازشون استفاده کنه
من نه EF آموزش دادم نه DataBinding و BindingSource ولی در عمل نشونتون دادم که چطور استفاده کنید. در عوض توقع دارم که این مفاهیم رو بدقت بررسی کنید. تعجب می کنم که با وجود BindingSource دوباره از BindingContext استفاده کردین. این نشون می ده که اصلا متوجه کاربردش نشدید. بقدری کدتون ایراد داره که نمی دونم چی باید بگم فقط توصیه می کنم چندبار دیگه ویدیو رو ببینید و با هر مفهومی مشکل داشتین بررسیش کنید.
-
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
نقل قول:
نوشته شده توسط
shocraneh
البته من فایل های ویدویی رو دنبال کردم .دلیل استفاده نکردنم از BindingSource اینه که شکل ظاهری جالبی به فرم نمیده .
BindingSource یک کامپوننت هست که عمل Binding رو تسهیل می کنه. و ربطی به UI نداره. متوجه منظورتون نشدم.
اگه منظورتون BindingNavigator هست در مورد اونم توضیح دادم شما ظاهرش رو به هر شکلی که دوست دارید می تونید تغییر بدید
-
2 ضمیمه
نقل قول: سوال و جواب های ساخت پروژه ثبت سفارشات
باسلام وتشکر
من برنامه روعوض کردم .البته یک سری ایرادات هنوز داره.لطفا دوستان نظر بدن
ابتدا نام مدرس رو ثبت میکنه وبعد برنامه کلاسی مدرس رو مشخص میکنه(دکمه لیست کلاسها)
1-(فرمی که بدون نویگیتورکارشده)مشکل اصلی اینه که موقع ذخیره خطای The changes to the database were committed successfully, but an error occurred while updating the object context. The ObjectContext might be in an inconsistent state. Inner exception message: AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges.
رو میده . البته توی بانک ثبت میشه . اگه دلیل خطارو بخام مختصرا بگم
private void Initialize()
{
bsteacher.DataSource = context.Tbl_teacher;
bslist.DataSource = bsteacher;
bslist.DataMember = "Tbl_list";
}
خطا هنگام ثبت مدرس
private void Save()
{
bsteacher.EndEdit();
bslist.EndEdit();
context.SaveChanges();
}
من باید ابتدا مشخصات مدرس رو ثبت کنم ،بعد براش کلاس تعریف کنم .ولی فکرمیکنم دلیل خطا اینه که این وابستگی براش مشخص نشده
2-برای بهینه شدن فرم frm_listچه روشی رو پیشنهاد میدید؟