PDA

View Full Version : گفتگو: سوال و جواب های ساخت پروژه ثبت سفارشات



gwbasic
دوشنبه 23 آبان 1390, 20:33 عصر
در این تاپیک می خوام با مشارکت شما دوستان مراحل ساخت یه پروژه ساده رو آموزش بدم:
http://barnamenevis.org/showthread.php?313523-کارگاه-عملی-ساخت-پروژه-ثبت-سفارشات-مرحله-به-مرحله&p=1376271#post1376271

از این تاپیک می تونید برای بحث و مطرح کردن سوال و گذاشتن کدهاتون استفاده کنید

electro_esma
دوشنبه 23 آبان 1390, 21:24 عصر
با سلام خدمت استاد عزیز

می خواستم بدونم این کدها باید با sql باشه یا با access هم می شه.

ممنون

electro_esma
دوشنبه 23 آبان 1390, 21:58 عصر
پس استاد چی شد . مامنتظریم ....

gwbasic
دوشنبه 23 آبان 1390, 22:06 عصر
با سلام خدمت استاد عزیز

می خواستم بدونم این کدها باید با sql باشه یا با access هم می شه.

ممنون

sql بهتره ولی هر طور راحت هستید مشکلی نداره


سلام!
میشه رابط کاربری برنامه رو با WPF طراحی کنیم؟ به خاطر بار علمی قضیه میگم.
استفاده از Page Navigation و Resourceها به طور محسوس + Skinable کردن اون، چطوره؟:متفکر:
بقیه دوستان میتونن خودشون رو وفق بدن یا همون WinForm خودمون بهتره؟

برای یادگیری اصول خیلی فرقی نمی کنه در ضمن wpf همه بلد نیستن

gwbasic
دوشنبه 23 آبان 1390, 22:38 عصر
قرار دوستان تو این تاپیک کدهاشون رو بذارن تا بعد از بررسی کد نهایی رو توی تاپیک اصلی قرار می دم

shahrzad87
سه شنبه 24 آبان 1390, 21:34 عصر
سلام
من پروژه رو با EntityFrameWork نوشتم، خوشحال می شم نظرتون رو بگین.

mmd2009
سه شنبه 24 آبان 1390, 23:20 عصر
سلام
من پروژه رو با EntityFrameWork نوشتم، خوشحال می شم نظرتون رو بگین.

با سلام

با اجازه از مدیر تاپیک که نقش استاد این تاپیک رو دارن من هم یک نظری هر چند ناچیز میدم که امیدوارم به سطح علمی شما کمک بکنه

اگر از طریقه نام گزاری ها یا شیوه نوشتن برخی شرط ها صرفه نظر کنیم و این رو بذارم پای این که کد رو سریع نوشتید و خواستید خروجی بگیرید فقط یک ایراد میشه از کدتون گرفت اونم اینه فرضا شما کد زیر رو در نظر بگیرید :


Customer Tcustomer = new Customer();
Tcustomer.Id = Guid.NewGuid();
Tcustomer.Name = txt_name.Text;
Tcustomer.Family = txt_family.Text;


نظر شخصی من اینه که کد بالا از لحاظ اصول کد نویسی و خوانا بودن و ..... از روشی که من در زیر نوشتم خیلی ضعیفتره.


var tcustomer = new Customer
{Id = Guid.NewGuid(), Name = txt_name.Text, Family = txt_family.Text};


به نظر من از این روش استفاده بکنید خیلی راحترید برای کد نویسی و هم اینکه کدتون اصولی تر میشه.

موفق باشید.

gwbasic
چهارشنبه 25 آبان 1390, 07:43 صبح
از Shahrzad87 صمیمانه تشکر می کنم که اولین کدو قرار داد، مرسی!!!
بابت نکته ای هم که mmd2009 عزیز (که همیشه لطفشون شامل حال بچه های سایت هست) اشاره کردن ممنونم. استقبال می کنم که بقیه دوستان هم به من کمک کنن. جناب mmd2009 اگه شما هم بتونید کدتون رو بذارید می تونه جنبه آموزشی خوبی داشته باشه ممنون می شم شما هم مشارکت کنین.
نکته ای رو که جناب mmd2009 اشاره کردن همون بحث object initializer هست که یکی از فیچر های سی شارپ ورژن 3 هست در کنار Linq. فقط در ادامه به این نکته می تونم اشاره کنم که این روش برای ساخت شی و مقداردهی اولیه دقیقا مثل حالتی هست که سازنده پیش فرض رو صدا می زنین یعنی اینکه در این حالت هم اول سازنده پیش فرض صدا زده می شه بعد کدهایی رو که در داخل آکولاد نوشته شده اجرا می شه. بنابراین با خیال راه می تونید جایگزین حالت قبل کنید. و همونطوری که اشاره کردن کد خواناتر خواهد بود البته این روش برای مقدار دهی محدودیت هایی داره که متاسفانه الان حضور ذهن ندارم.

بازهم تشکر میکنم. منتظر کدهای دوستانی که ابراز علاقه کردن هستم

wolf_majid
چهارشنبه 25 آبان 1390, 10:59 صبح
سلام
این یک قسمت از پروژه حسابداری منه که قبلا" نوشتم و الان دارم تصحیح و تکمیلش می کنم
البته تا حدی مربوط به این تاپیک میشه
ممنون میشم تستش کنید و نظرتون رو بگید

http://www.4shared.com/file/_BcjukXw/Customer_2.html

mmd2009
چهارشنبه 25 آبان 1390, 12:27 عصر
اول تشکر می کنم از دوست خوبمون اقای gwbasic که توضیحاتی که من در شیوه نوشتن کد ندادم رو نوشتن و کارو برای خواننده واضح کردن.


با اجازه در مورد کد های اقای wolf_majid یک نظری هم میدم امیدوارم کارایی براتون داشته باشه.

نکته مثبت اولی که دیدم نوشتن Comment بود برای کدهاتون که واقعا بعد از مدتا یک همچین چیزی دیدم تو این بخش و امیدوارم همیشه به این روش Comment گذاری بکنید

من چندتا نکته در مورد کدهاتون میگم که البته این نظر شخصی منه و ممکنه خیلی ها این رو پسند نکنند

برای شروع به کد زیر نگاه کنید :


public string createCode()
{
DataTable dt = new DataTable();
dt = dal.Select(findCode);
if (dt.Rows[0][0].ToString().Trim() == string.Empty)
{
return "10001";
}
else
{
long lngNum = long.Parse(dt.Rows[0][0].ToString().Trim()) + 1;
return ("1" + (lngNum).ToString("D4"));
}
}


ببینید فرضا این شرط زیر :


dt.Rows[0][0].ToString().Trim() == string.Empty


برقرار بود شما یک مقدار بازگشتی دارید خب حالا دیگه نیازی نیست شما از else استفاده بکنید چون اگر برگرده دیگه اصلا شرط بعد هر چی باشه یا هر کدی باشه اصلا دیگه خوانده نمیشه پس این کد رو بخ این صورت بنوسید خیلی بهتره :


public string createCode()
{
DataTable dt = new DataTable();
dt = dal.Select(findCode);
if (dt.Rows[0][0].ToString().Trim() == string.Empty)
{
return "10001";
}
long lngNum = long.Parse(dt.Rows[0][0].ToString().Trim()) + 1;
return ("1" + (lngNum).ToString("D4"));
}


مقدار else در این جا یک مقدار زائد بود که من حذفش کردم.


حالا در همین متد کد زیر رو ببینید :


DataTable dt = new DataTable();
dt = dal.Select(findCode);


نظر من اینه که شما برای تعریف و انتصاب نیازی نیست در 2 خط این کد رو بنوسید کافیه به این روش کد رو اصلاح بکنید :


DataTable dt = dal.Select(findCode);


یک نکته ی دیگه هم که من تو خیلی از سایت های خارجی میبینم این کد زیر رو که شما می نویسید :


if (!manage.txtNull(_mytxtTell))
{
dgvShow.DataSource = Connect.filterWithTell(_mytxtTell.Text);
}
else
{
dgvShow.DataSource = Connect.selectAll_Farsi();
}


رو به شکل عملگرهای :? می نویسن که واقعا هم از نظر کد نوسی به نظر من استفاده از این عملگر ها ساده هست و نیازی به نوشتن if و else نیست البته درسته که اونا هم شرط هستند ولی نوشتنش حداقل برای من خواناتره


dgvShow.DataSource = !manage.txtNull(_mytxtTell) ? Connect.filterWithTell(_mytxtTell.Text) : Connect.selectAll_Farsi();


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

البته این حرفارو باید استاد های این انجمن بزنن نه من ولی خب چون اونا کمتر میان سر میزنن به همچین تاپیک هایی ما برای تبادل اطلاعات کدهای خودمون رو میذاریم و با هم مقایسه می کنیم

من هم همین برنامه رو به زودی می نویسم و میذارم و نظرات بقیه رو جویا میشم روی کدنویسی خودم که با هم بتونیم یک روش استاندارد تهیه بکنیم

موفق باشید.

wolf_majid
چهارشنبه 25 آبان 1390, 12:47 عصر
واقعا" که شاهکار نظر دادید :تشویق:
خیلی خیلی سپاسگذارم

mmd2009
چهارشنبه 25 آبان 1390, 14:09 عصر
@wolf_majid : خواهش می کنم دوست عزیز. :چشمک:

دوستان نشد زیاد رو برنامه کار کنم و مانور زیادی روش بدم . اگر کمی و کاستی بود ببخشید ولی در هر صورت خوش حال میشم نظری بدید در مورد شیوه کد نوشتن من

این اسکریپت بانک :


USE [EntitySampleDatabase]
GO
/****** Object: Table [dbo].[Customer] Script Date: 11/16/2011 14:31:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[IdCustomer] [bigint] NOT NULL,
[Name] [nvarchar](30) NOT NULL,
[Family] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[IdCustomer] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO



برنامه رو هم ضمیمه کردم

با تشکر

shahrzad87
چهارشنبه 25 آبان 1390, 20:11 عصر
با سلام

با اجازه از مدیر تاپیک که نقش استاد این تاپیک رو دارن من هم یک نظری هر چند ناچیز میدم که امیدوارم به سطح علمی شما کمک بکنه

اگر از طریقه نام گزاری ها یا شیوه نوشتن برخی شرط ها صرفه نظر کنیم و این رو بذارم پای این که کد رو سریع نوشتید و خواستید خروجی بگیرید فقط یک ایراد میشه از کدتون گرفت اونم اینه فرضا شما کد زیر رو در نظر بگیرید :


Customer Tcustomer = new Customer();
Tcustomer.Id = Guid.NewGuid();
Tcustomer.Name = txt_name.Text;
Tcustomer.Family = txt_family.Text;


نظر شخصی من اینه که کد بالا از لحاظ اصول کد نویسی و خوانا بودن و ..... از روشی که من در زیر نوشتم خیلی ضعیفتره.


var tcustomer = new Customer
{Id = Guid.NewGuid(), Name = txt_name.Text, Family = txt_family.Text};


به نظر من از این روش استفاده بکنید خیلی راحترید برای کد نویسی و هم اینکه کدتون اصولی تر میشه.

موفق باشید.

من این کد رو توی 5 دقیقه نوشتم، ساده نوشتم که برای دوستانی که با EntityFrameWork آشنا نیستن راحت باشه و خواستم پروژه رو شروع کنم تا بقیه هم بیان و نظر و کدهاشون رو بذارن، روشی که گفته بودین جالب بود، ممنون که وقت گذاشتین و ایرادهای کد رو گفتین
راستی پست مدیریت بخش رو هم بهتون تبریک می گم :لبخندساده:
به آقای جمشیدی هم تبریک می گم،:تشویق: امیدوارم با کمک شما همه تو برنامه نویسی بیشتر پیشرفت کنیم و یاد بگیریم که اصولی و بهینه کدنویسی کنیم.:چشمک:

gwbasic
چهارشنبه 25 آبان 1390, 20:14 عصر
قبل از هر چیز تشکر می کنم از تمام دوستانی که اینجا کدشون رو گذاشتن و مشارکت کردن. و تعجب می کنم از دوستانی که ابراز تمایل کردن ولی کدشونو نذاشتن. با مشارکت شما این تاپیک ادامه پیدا میکنه پس کم لطفی نکنین و شما هم تو بحث شرکت کنید وگرنه این تاپیک هم مثل خیلی از تاپیک های دیگه نا تمام رها می شه. مطمئن باشید تا خودتون کد ننویسید پیشرفتی حاصل نمی شه از هیچ چیزی هم نترسید. مطلب هم برای خوندن زیاده پس زیاد منتظر جواب نباشید چون تاثیری نمی ذاره این همه کتاب هست به فکر جمع آوری مطلب نباشید خودتون شخصا اقدام کنید.

خوب بریم سراغ دوستانی که کد گذاشتن
من فقط اینجا چند نکته رو برجسته می کنم تا بعد در ادامه بتونم ازش نتیجه گیری کنم.
اول شهرزاد خانم که زحمت کشید و اولین کد رو گذاشت.
1- برای هر عمل Insert یا update‌ ای یک objectContext ایجاد کردن و یک شی از مدل که همون Customer هست ساختن و مقادیر کنترل های فرم رو توی شی ریختن و شی رو به objectContext اضافه کردن و برای ذخیزه در database متد SaveChanges‌رو فراخوانی کردن و درنهایت datagrid‌رو update‌کردن و objectContext‌رو dispose کردن البته با استفاده از using این عمل بطور اتوماتیک انجام می شود.
2- اگر کاربر سطری از گرید رو انتخاب کرد مقادیرش داخل textBox ها نمایش داده می شود.
آقای mmd2009 هم تقریبا به همین شکل عمل کردن ولی خوب dataGridView توی فرمشون نداشتن.

حالا سوالی که مطرح هست اینه که مدلی که توی objectContext ما توسط Designer‌ساخته می شه یعنی همون customer فقط استفادش اینه که موقع ذخیره یا ویرایش مقداری توش ریخته بشه و این شی فقط واسطی برای ذخیره مقداری توی database هست؟
و اینکه آیا ما باید مستقیم با کنترل های فرم کار کنیم یا اینکه این مدل customer می تونه بیشتر به ما کمک کنه

برای اینکه جواب این سوال رو بگیرید توصیه می کنم به تاپیک زیر مراجعه کنید.
http://barnamenevis.org/showthread.php?288558-آموزش-Data-Binding

در ادامه من کد پیشنهادیم رو با توضیحات بیشتر خواهم گذاشت

اما در مورد آقای wolf_majid هم باید به این نکته اشاره کنم که کدها خوب بودن اما چون از EntityFramework استفاده نکردن خوب برای ارتباط با Database کدهای بسیار زیادی نوشتن که با وجود یه همچین ابزارهایی دیگه نیازی نیست به این شکل کد نویسی کرد. در مورد فرمتون کد زیادی نوشتین می شه اینا رو به طرق مختلف تقسیم بندی کرد تا کدی کمتری توی فرم اصلی قرار بگیره مثلا به عنوان مثال شما برای گرفتن عدد یا همون پول از یک textBox استفاده کردین که چند رویداد برای اون گذاشتین و اعداد رو به وسیله کاما سه رقم سه رقم جدا کردین. ممکنه توی فرمتون چند textBox داشته باشین که بخواین کاربر مقدار عددی (پول) وارد کنه اونوقت باید بازم این کدارو تکرار کنید. راه بهتر اینه که یه کنترل جدید می نوشتید که از textBox ارث ببره و این کدها رو یکبار و فقط توی این کنترل می نوشتید به این شکل دیگه هرجا لازم بود این کنترل رو جای textBox توی فرم می انداختین
فعلا تا اینجا رو از من قبول کنید تا زیاد از بحث خارج نشیم
خواهشی که دارم کدهاتون رو حتی الامکان کوتاه بنویسید تا بررسیش وقت کمتری بگیره!

wolf_majid
چهارشنبه 25 آبان 1390, 20:28 عصر
اما در مورد آقای wolf_majid هم باید به این نکته اشاره کنم که کدها خوب بودن اما چون از EntityFramework استفاده نکردن خوب برای ارتباط با Database کدهای بسیار زیادی نوشتن که با وجود یه همچین ابزارهایی دیگه نیازی نیست به این شکل کد نویسی کرد. در مورد فرمتون کد زیادی نوشتین می شه اینا رو به طرق مختلف تقسیم بندی کرد تا کدی کمتری توی فرم اصلی قرار بگیره مثلا به عنوان مثال شما برای گرفتن عدد یا همون پول از یک textBox استفاده کردین که چند رویداد برای اون گذاشتین و اعداد رو به وسیله کاما سه رقم سه رقم جدا کردین. ممکنه توی فرمتون چند textBox داشته باشین که بخواین کاربر مقدار عددی (پول) وارد کنه اونوقت باید بازم این کدارو تکرار کنید. راه بهتر اینه که یه کنترل جدید می نوشتید که از textBox ارث ببره و این کدها رو یکبار و فقط توی این کنترل می نوشتید به این شکل دیگه هرجا لازم بود این کنترل رو جای textBox توی فرم می انداختین
حق با شماست
اما همانطور که گفتم من این پروژه را قبلا" (بیش از یک سال پیش نوشتم) و الان قصد تصحیح و تکمیلش رو دارم
اون موقع هنوز با سایر سربارگذاریهای tostring آشنا نبودم

اما حتما" تصحیحشون می کنم
ممنون از پاسختون

haniyehghassami
چهارشنبه 25 آبان 1390, 21:28 عصر
ببخشید میشه مال منم یه نگاهی بندازید:خجالت:

ardeshir1365
پنج شنبه 26 آبان 1390, 17:29 عصر
سلام به همه
منم یه خورده کد زدم یه نیگاه بهش بندازین
فقط یه مشکل داره بار اول تو بانک ذخیره میکنه ولی برای داده بعدی که میخوای ذخیره کنی خطا میده و باید برنامه رو ببندی و از دوباره اجرا کنی
http://www.persiangig.com/pages/download/?dl=http://ardeshir1365.persiangig.com/csharp/customer.rar

gwbasic
پنج شنبه 26 آبان 1390, 18:26 عصر
ببخشید که هنوز نتونستم آموزشی بذارم.
امروز داشتم ویدیویی آماده می کردم که متاسفانه هارد اصلیم مثل اینکه سوخت. فعلا که 1 ترابایت اطلاعاتم به فنا رفته نمی دونم باید چکار کنم. عذر منو بپذیرید.
دعا کنید درست شه!!!

haniyehghassami
پنج شنبه 26 آبان 1390, 18:38 عصر
ببخشید که هنوز نتونستم آموزشی بذارم.
امروز داشتم ویدیویی آماده می کردم که متاسفانه هارد اصلیم مثل اینکه سوخت. فعلا که 1 ترابایت اطلاعاتم به فنا رفته نمی دونم باید چکار کنم. عذر منو بپذیرید.
دعا کنید درست شه!!!
ایشالله درست میشه

هممون دعا میکنیم برگرده اطلاعاتتون

نگران نباشین:چشمک: :لبخندساده:

haniyehghassami
پنج شنبه 26 آبان 1390, 19:36 عصر
سلام به همه
منم یه خورده کد زدم یه نیگاه بهش بندازین
فقط یه مشکل داره بار اول تو بانک ذخیره میکنه ولی برای داده بعدی که میخوای ذخیره کنی خطا میده و باید برنامه رو ببندی و از دوباره اجرا کنی
http://www.persiangig.com/pages/download/?dl=http://ardeshir1365.persiangig.com/csharp/customer.rar

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

2 اینکه idدر دیتابیس باید از نوع unidentified باشه و در قسمت کد نویسی اینجور مقدار بگیره تا یه کد منحصر به فرد شامل رقم و حروف درست بشه



id=Guid.new();
//برای تبدیل کردن به این نوع هم باید نوشت
id=(Guid) datagrid.rows(i).cells[0].value;


حالا اگه entity framework اشنا بشیم تمام این کدنویسی های زیادی تمام میشن

electro_esma
پنج شنبه 26 آبان 1390, 22:34 عصر
با تشکر از دوستان

من تو این چند روز با دستورات ابتدایی oledb و sql تونستم مرحله اول پروژه رو بنویسم ولی وقتی دیدم اساتید دارن از entity framework استفاده می کنن من روم

نیومد برنامه ی ساده و پیش پا افتادمو رو کنم.

از جناب استاد gwbasic و کلیه استاتید خواهش می کنم که در خصوص یاد گیری مفهومی و عمقی entity framework به بنده هم که تازه کار هستم کمک کنید.چ

ممنون از همه استاتید.

electro_esma
پنج شنبه 26 آبان 1390, 23:03 عصر
با سلام خدمت دوست عزیزم haniyehghassami

شما می تونی راجع به entity framework یه منابعی چیزی معرفی کنی .

ممنون می شم. اگه خودت هم تونستی توضیح بدی که ممنون

haniyehghassami
جمعه 27 آبان 1390, 17:26 عصر
با سلام خدمت دوست عزیزم haniyehghassami

شما می تونی راجع به entity framework یه منابعی چیزی معرفی کنی .

ممنون می شم. اگه خودت هم تونستی توضیح بدی که ممنون

ممنون اما استاد این بخش یعنی اقای gwbasic قرار هست اموزش entity framework را در تاپیک جدا که ادرسش را توی اولین پست می تونین پیدا کنین، قرار بدن:چشمک:

موفق و پیروز باشین

haniyehghassami
جمعه 27 آبان 1390, 17:29 عصر
از بچه ها دعوت می کنم تا قسمت اول هنوز اماده نشده لطفا پروژه های خوذشون را این جا بگذارن

جا داره از کسانیکه پروژه هاشون گذاشتن تشکر کنم..........................

من منتظر پروژه های شما دوستان هستم،هرجور که نوشته باشین خوبه فقط قصد اینه که شیوه صحیح کدینگ را همه یاد بگیرند

پس یا علی:لبخندساده:

electro_esma
جمعه 27 آبان 1390, 20:18 عصر
با تشکر از دوست عزیزم haniyehghassami

ممنون که این قدر مشتاق و پیگیر هستی .

و از استاد هم جناب آقایgwbasic در خواست دارم تا سریعتر آموزش entity رو شروع کنه؟

فقط یه سوال هر چی دوستان کد گذاشتون با vs 2010 بوده یعنی با 2008 نمی شه entity کار کرد. اگه جواب مثبته چند نمونه مثال واسم بذارین .

ممنون می شم.

mmd2009
جمعه 27 آبان 1390, 20:46 عصر
با تشکر از دوست عزیزم haniyehghassami

ممنون که این قدر مشتاق و پیگیر هستی .

و از استاد هم جناب آقایgwbasic در خواست دارم تا سریعتر آموزش entity رو شروع کنه؟

فقط یه سوال هر چی دوستان کد گذاشتون با vs 2010 بوده یعنی با 2008 نمی شه entity کار کرد. اگه جواب مثبته چند نمونه مثال واسم بذارین .

ممنون می شم.

entity در 2008 کامل نبود و مایکروساف درسال 2010 اون رو کامل کرد. دلایلش دقیقا یادم نیست.

موفق باشید

haniyehghassami
جمعه 27 آبان 1390, 22:33 عصر
و اینکه یاذتون باشه entity تنها در DonNet framework 4 فابل اچرا هستش

haniyehghassami
جمعه 27 آبان 1390, 22:48 عصر
بفرمایید
اگر بتونم جواب میذم بهتون حتما

mmd2009
شنبه 28 آبان 1390, 00:09 صبح
و اینکه یاذتون باشه entity تنها در DonNet framework 4 فابل اچرا هستش

دوست عزیز در نسخه 3.5 هم وجود داشت entity


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

78039

موفق باشید

noroozifar
شنبه 28 آبان 1390, 00:51 صبح
سلام این روش کد نویسی منه تو این برنامه فقط درج را نوشته ام و بر اساس 3 لایه حالا نمیدونم درست کار کرده ام یا نه اسکریپ بانک را هم گذاشتم اسکریپ همنام با بانکه توی تعریف ای دی تا حالا از این نوع استفاده نکرده ام نمیدونستم به چه طریق استفاده کنم uniqueidentifier

نظرااتونو منتظرم ببینم

فایل
http://s2.picofile.com/file/7187701719/Sefareshat.exe.html

haniyehghassami
شنبه 28 آبان 1390, 07:59 صبح
سلام

فاز اول به صورت فیلم اموزشی اماده شده

هوراااااااااااااااااااااا ااااااااااااااااااااا :بامزه: :لبخند:

برید بگریدش و ببینید و سوالاتتون اینجا مطرح کنید

ما منتظریم..............................

noroozifar
شنبه 28 آبان 1390, 17:48 عصر
دستت درد نکنه بابت آموزش ... فایل منو هم دانلود کنید در چند تاپیک قبلی و نظراتونو بگید

در فیلم آموزشی به راحتی با کمترین کد میشه برنامه را نوشت امت می خواهم بدونم تو بخش 3 لایه باید به چه طریق استفاده کرد
و بعد داخل فیلم از یک storemodel ایجاد کرده اید اما هیچجا ندیدم استفاده بشه همش با دیتا بیندینگ استفاده شد
و اون مشکل که در xml به صورت دستی تصحیح کردید فقط تو طراحی با این مشکل بر می خوریم تو اتمام برنامه وقتی پروژه تمام شد چی به مشکلی بر نمیخوره

لطفا هر چه زودتر آموزشهای بعدی را بزار میخواهم پروژه جدیدم را با این روش درست کنم با کدهای بهینه تر

دستت درد نکنه

gwbasic
شنبه 28 آبان 1390, 21:09 عصر
دوستان فایل ویدیو رو تصحیح کردم و دوباره گذاشتم. حجمش نصف شد حدود 27mg. البته هنوز یه قسمتهایش مونده که با کدش بعدا میذارم

جناب Noroozifar کدتون رو دیدم خیلی خوب بود منتها چون به این روش نمی خوایم کار کنیم و از entityframework استفاده می کنیم بنابراین اجازه بدید من دبگه نظری ندم فقط خواهشی که ازتون دارم این کدتون رو در بخش پروژه های open source قرار بدین ٰدیدنش می تونه آموزنده باشه.
در مورد سه لایه یا بهتر بگم چند لایه اجازه بدید در فازهای بعدی صحبت کنیم
stroemodel همون فایل EDM ما هست که کدهای مربوط به کار با entityframework اونجا تعریف شده تمام کلاسهای متناظر با جدوال دیتابیس و کلاسی که همه entity ها رو در بر داره و از objectContext مشتق می شه در این فایل تعریف میشه
اون مسئله ای هم که در فایل xml به طور دستی نوشتم هم مشکلی ایجاد نمی کنه مگر اینکه فایل توسط Designer‌دوباره تولید بشه که چون از بین می ره ما باید یادمون باشه که دوباره بنویسیم ( فرصت نکردم راه بهتری پیدا کنم)

در ضمن آموزشها به مرور آماده می شه و من چیزی الان آماده ندارم. لطفا صبر داشته باشین!

uniqueboy_ara
شنبه 28 آبان 1390, 22:13 عصر
اگه تو فایل XML تغییری ندیم چه اتفاقی میفته؟؟؟
من تغییرش ندادم و در ظاهر هیچ اتفاقی نیفتاد و برنامه هم به درستی کار میکنه!

من خودم با معماری 3لایه و ADO.net کار میکنم، میخواستم بدونم آیا این روش (Entity Framework ) نسبت به ADO.net سرعت بیشتری داره؟؟؟

haniyehghassami
یک شنبه 29 آبان 1390, 00:34 صبح
سلام
من فیلم اموزشی رو دیدم چندتا سوال داشتم :

1 - اگر بخواهیم محتویات یک تکی باکس را همزمان توی 2 تا جدول بریزیم باید چه جور عمل کنیم ؟

2 - اگر بخواهیم یک سری از اطلاعاتمون که مثلا توی تب اول ثبت که شد، اون ایدی که جدید ایجاد شده را بخواهیم از جدول بگیریم که اطلاعات مربوط به جدول دوم را با همین ایدی که جدید ایجاد شده ثبت کنیم باید چه جوری عمل کنیم؟

3 - این کانکشن که ما ایجاد میکنیم از توی ویزارد ایا روی هر سیستمی به صورت محلی یا لوکال جواب میده؟(مثل وقتی که جای اسم سیستم نقطه میگداریم) اگه بخواهیم اونجوری کار کنیم کجای کدنویسی باید اسم سرور را به برنامه بدیم؟

4 - چرا context را در زمان بستن فرم dispose کردین؟ و چرا null کردین؟ فرقشون چیه؟ مگه dispose از بین نمیبردش؟ پس چرا باید هم dispose بشه هم null؟

5 - چرا تابع () context.SaveChange را مستقیم تو رویداد کلیک صدا نکردین؟ چه فرقی داره که توی متد جدا گذاشتین و متد را صدا زدین؟

ببخشیدا، من یک مبتدی هستم هنوز راه نیفتادم:لبخند:

gwbasic
یک شنبه 29 آبان 1390, 08:11 صبح
اگه من اشاره کردم که فعلا هر طوری که می تونید با database ‌ارتباط برقرار کنید برای اینکه دوستان نترسن و بتونن کدهاشون رو بذارن و همچنین با دیدن کدهای مختلف بتونیم تفاوت رو حس کنیم
درضمن در مورد آموزش EntityFramework و یا کلا هر تکنولوژی دیگر من پیشنهاد می کنم حداقل یک کتاب مطالعه کنید (البته شاید در آینده آموزشی گذاشتم) چرا فکر می کنید توی فورم یک نفر باید از صفر یه چیزی رو آموزش بده در ضمن اگه کسی هم یه کاری رو شروع می کنه جایگاه شما چیه فقط یه استفاده کننده نباید کسی مشارکت کنه!!! ما عادت کردیم دنبال لقمه آماده بگردیم. آقای محبی توی لینک زیر مطلب جالبی رو اشاره کردن که در دل من هم هست Forum Driven Development که ما تصمیم می گیریم کاری انجام بدیم بدون اطلاعاتی بعد میریم توی یک فروم سوال کلی رو مطرح می کنم و توقع داریم یکی بیاد از سیر تا پیاز بهمون آموزش بده.
http://blog.afsharm.com/2011/11/forum-driven-development.html
پیشنهاد می کنم کتاب Apress pro entity framework 4.0 رو که حدود 250 صفحه هست در حد حداقل چند فصل مطالعه کنید و یا کتابی رو که آقای بهروز راد ترجمه کردن رو مطالعه کنید (نمی دونم ترجمه همین کتاب هست یا نه)

gwbasic
یک شنبه 29 آبان 1390, 08:31 صبح
سلام
من فیلم اموزشی رو دیدم چندتا سوال داشتم :

1 - اگر بخواهیم محتویات یک تکی باکس را همزمان توی 2 تا جدول بریزیم باید چه جور عمل کنیم ؟

2 - اگر بخواهیم یک سری از اطلاعاتمون که مثلا توی تب اول ثبت که شد، اون ایدی که جدید ایجاد شده را بخواهیم از جدول بگیریم که اطلاعات مربوط به جدول دوم را با همین ایدی که جدید ایجاد شده ثبت کنیم باید چه جوری عمل کنیم؟

3 - این کانکشن که ما ایجاد میکنیم از توی ویزارد ایا روی هر سیستمی به صورت محلی یا لوکال جواب میده؟(مثل وقتی که جای اسم سیستم نقطه میگداریم) اگه بخواهیم اونجوری کار کنیم کجای کدنویسی باید اسم سرور را به برنامه بدیم؟

4 - چرا context را در زمان بستن فرم dispose کردین؟ و چرا null کردین؟ فرقشون چیه؟ مگه dispose از بین نمیبردش؟ پس چرا باید هم dispose بشه هم null؟

5 - چرا تابع () context.SaveChange را مستقیم تو رویداد کلیک صدا نکردین؟ چه فرقی داره که توی متد جدا گذاشتین و متد را صدا زدین؟

ببخشیدا، من یک مبتدی هستم هنوز راه نیفتادم:لبخند:

مرسی از سوال های خوبتون
1- من سعی دارم این روش کدنویسی رو توضیح بدم که کنترل های روی فرم به یه موجودیت وشی ای بایند هستند. کاش یه مثال می زدین ولی در کل فرض کنید ما یک شی در context داریم از جنس Customer و یک شی دیگه داریم از جنس Product خوب این دو شی رومی تونیم هرجور که دوست داریم پر کنیم مثلا مقدار Text یک TextBox رو به یک پراپرتی از Customer و یک پراپرتی از Product بدهیم و در نهایت SaveChanges رو صدا بزنیم تغییرات ذخیره خواهد شد.

2- در مورد این سوال وقتی فرم Order رو بخواهیم بسازیم جوابتون رو خواهید گرفت در ضمن باز به ین نکته اشاره می کنم که بهتره با شی کار کنیم نه اینکه ID بین فرمها جابجا کنیم.

3- بحث Connection string هم که مستقل از EF هست. اما معمولا توی App.Config این مقدار تنظیم می شود. در مورد امنیتش هم نکته دیگری هست که می تونیم اونو Encrypt کنیم یا اصلا یک dll برای اون بنویسیم. که بحث جداگانه ای رو می طلبه

4- معمولا اشیاء سنگین و یا اشیایی که منابع از سیستم می گیرند را باید در اولین فرصت آزاد کنیم. ObjectContext هم از این دسته هست. و اما اینکه چرا null می کنیم کار از محکم کاری عیب نمی کنه!!!

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

uniqueboy_ara
یک شنبه 29 آبان 1390, 09:20 صبح
میشه جواب من رو هم بدید؟!

Amir Oveisi
یک شنبه 29 آبان 1390, 09:38 صبح
فقط یه سوال هر چی دوستان کد گذاشتون با vs 2010 بوده یعنی با 2008 نمی شه entity کار کرد. اگه جواب مثبته چند نمونه مثال واسم بذارین .
اگر از vs 2008 استفاده مي كنيد بايد SP1 اش رو نصب كنيد.

gwbasic
یک شنبه 29 آبان 1390, 10:11 صبح
اگه تو فایل XML تغییری ندیم چه اتفاقی میفته؟؟؟
من تغییرش ندادم و در ظاهر هیچ اتفاقی نیفتاد و برنامه هم به درستی کار میکنه!

من خودم با معماری 3لایه و ADO.net کار میکنم، میخواستم بدونم آیا این روش (Entity Framework ) نسبت به ADO.net سرعت بیشتری داره؟؟؟

شما از چه نسخه ای از Visual Studio استفاده می کنید 2010. آیا سرویس پک یک رو نصب کردید؟ وقتی چند آیتم رو اضافه می کنید موقع ذخیره مشکلی پیش نمیاد؟!

در مورد EF هم باید بگم که چیزی جدا از ADO.Net نیست و در برخی موارد هم چون Command نهایی رو خودش تولید می کنه و چون این Command بهینه هست سرعت بیشتری نسبت به استفاده از روش استفاده از DataSet و ساختن Command توسط خودمون رو داره

uniqueboy_ara
یک شنبه 29 آبان 1390, 17:11 عصر
2010 هستش ولی سرویس پک یک نیست
حق با شماست، وقتی سیو رو میزنم بعضی وقتا یه ارروری میده! پس این اررور به خاطر همین مسئله پیش میاد؟! مرسی از توضیحاتتون

electro_esma
یک شنبه 29 آبان 1390, 20:57 عصر
با تشکر از استاد ( به حق استاد)

خدا خیرت بده . من فیلم ویدیویی رو تازه دیدم . بسیار عالی بود. ان شاا... که ادامه داشته باشه و کم نیارین.

haniyehghassami
دوشنبه 30 آبان 1390, 21:22 عصر
سلام
بچه ها اماده باشین واسه قسمت دوم
اگه فیلم اموزشی را دیده باشین پس تا حالا حتما چیزایی از entity یاد گرفتین
پس یک نمونه بسازین و اماده بشین واسه فاز دوم
تا فردا جزئیات فاز دوم اماده میشه
مرحله بعدی باید حتما از entity استفاده کنین.پس از الان سرچ کنین تا بهترین پروژه را درست کنین(شاید توی پروژه اصلی کد شما قرار بگیره:چشمک:)
از امشب مرحله 2 شروع شده

haniyehghassami
دوشنبه 30 آبان 1390, 22:15 عصر
نکات مهم مرحله 1 پروژه :
__________________________________________________ ____________
1 - نوع داده ای Uniqueidentifier بود که فکر کنم کسانی بودن که مثل من باهاش اشنا نبودن:


نوع داده ای 16 بیتی هست که بصورت باینری ذخیره میشه با نام globally unique identifiers (GUIDs) که یک عدد دودویی منحصر به فرد هست و هیچ کامپوتر دیگری در جهان وجود ندارد که یک GUID مشترک با کامپوتر دیگر را تولید کند. استفاده ی اصلی از GUID برای تولید یک شناسه ی منحصر به فرد در یک سیستم شبکه بزرگ که شامل چندین سایت است ,کاربرد دارد.
یک مقدار GUID برای ستون uniqueidentifier است که معمولا توسط یکی از روش های زیر به دست می اید :
* In a Transact-SQL statement, batch, or script by calling the NEWID function.
*در کد برنامه با فراخوانی تابع API ویا متدی که GUIDمی گرداند
این متغیر به 2 فرمت زیر به وجود می اید :
1 - رشته ای حاوی کاراکتر و عدد:Character string format: '6F9619FF-8B86-D011-B42D-00C04FC964FF'
2 - فرمت دودویی : 0xff19966f868b11d0b42d00c04fc964ff
همان طور که در فیلم دیدین مفدارRowGuidرا برابرYes زذیم تا مقدار پیش فرض برای Default value or binding بشه NewGuid() تا هربار یک مقدار منحصربفرد در دنیا در فیلد جدول شما بیا
(منبع این مطلب (http://msdn.microsoft.com/en-us/library/ms190215.aspx))
.

haniyehghassami
دوشنبه 30 آبان 1390, 23:58 عصر
نکته 2 - چرا stored generate patern را identity گذاشتیم؟ چون ایدی ما بصورت اتوماتیک generate میشه و چون میخواهیم بفهمیم اون ایدی از سمت دیتابیس چی بوده پس این مقدار رو توی حالت مدل که توی ویژال استدیو هستش را identity میزاریم و توی فایل xml هم تغییرش میدیم

نکته 3 - alt + shft + f10 که برای ساختن یک متد بود : یعنی مثلا اگه میخواهین یک متد بسازین فقط اسمش با ارگومنت هاش را بنویسید و این دکمه ها را بزنین تا اتوماتیک دکمه ساخته بشه

mmd2009
سه شنبه 01 آذر 1390, 00:36 صبح
نکته 3 - alt + shft + f10 که برای ساختن یک متد بود : یعنی مثلا اگه میخواهین یک متد بسازین فقط اسمش با ارگومنت هاش را بنویسید و این دکمه ها را بزنین تا اتوماتیک دکمه ساخته بشه

خیلی از کدهارو ما اصولا نمی نویسم snip رو برای همین گذاشتن که وقتمون رو هدر ندیم برای نوشتن کدهای نظیر for یا foreach یا if یا .....

Amir Oveisi
سه شنبه 01 آذر 1390, 00:58 صبح
و حتی ساختن snippet های سفارشی! (http://msdn.microsoft.com/en-us/library/ms165393%28v=vs.80%29.aspx)

gwbasic
پنج شنبه 03 آذر 1390, 12:32 عصر
قسمت دوم ویدیو مربوط به ساخت فرم Customer در تاپیک اصلی قرار داده شد لطقا به تاپیک اصلی که در پست اول اشاره شده مراجعه کنید.

این پست حذف خواهد شد

haniyehghassami
جمعه 04 آذر 1390, 10:18 صبح
قسمت دوم ویدیو مربوط به ساخت فرم Customer در تاپیک اصلی قرار داده شد لطقا به تاپیک اصلی که در پست اول اشاره شده مراجعه کنید.

این پست حذف خواهد شد

سلام؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!! !!!!!!!!!!11
کدوم پست قرار هست حدف بشه؟؟؟؟؟

noroozifar
جمعه 04 آذر 1390, 12:33 عصر
نکته 2 - چرا stored generate patern را identity گذاشتیم؟ چون ایدی ما بصورت اتوماتیک generate میشه و چون میخواهیم بفهمیم اون ایدی از سمت دیتابیس چی بوده پس این مقدار رو توی حالت مدل که توی ویژال استدیو هستش را identity میزاریم و توی فایل xml هم تغییرش میدیم

نکته 3 - alt + shft + f10 که برای ساختن یک متد بود : یعنی مثلا اگه میخواهین یک متد بسازین فقط اسمش با ارگومنت هاش را بنویسید و این دکمه ها را بزنین تا اتوماتیک دکمه ساخته بشه

من هر چی این دکمه ها را میزنم الت شیفت اف 10 هیچ متدی ظاهر نمیشه؟؟

mmd2009
جمعه 04 آذر 1390, 14:31 عصر
سلام؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!! !!!!!!!!!!11
کدوم پست قرار هست حدف بشه؟؟؟؟؟

منظورشون همون پست بود دیگه. یعنی همون 51 .

اگر قرار باشه اینجارو پاک بکنن میگن تاپیک رو پاک میکنن.

موفق باشید

haniyehghassami
جمعه 04 آذر 1390, 16:20 عصر
من هر چی این دکمه ها را میزنم الت شیفت اف 10 هیچ متدی ظاهر نمیشه؟؟

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

بعدش براش پرانتز بزار و اگه متدت ارگومان ورودی داره براش توی پرانتز اونارو بنویس

بعدش سمی کولن بزن

چون تابعت تعریف نشده هستش زیر یه خط قرمز میکشه خود VS که بهت بگه این متد در کدت موجود نیست حالا 3 راه برای درست کردن متدت هست

1 - نوع( ش ز:لبخند: ) اینکه با ماوس روش وایسی تا مستطیل ابی کوچولو بیاد زیر اون خط قرمزه بعد با ماوس برو روش یه مربع باز میشه روش کلیک کن و اولین خطش رو بزن مثل زیر :

78381
2- راهی که باید اون کلیدها رو از صفحه کلید بزنی


alt + shft + f10 که برای ساختن یک متد بود

3- متد را دستی بساز:بامزه:

noroozifar
جمعه 04 آذر 1390, 17:10 عصر
یک مقدار هم در مورد کانکشن استرینگ توضیح بدید اینکه من همیشه فایل را در پوشه bin\Debug پروژه میگذاشتم و کانکشن استریگ را می نوشتم حالا تو این روش فکر کنم راحتر میشه با موضوع کانکشن استرینگ کنار امد .... در مورد این موضوع توضیح بدهید کانکش استرینگ به چه صورت در این روش پیاده سازی کنیم که هنگام ایجاد فایل setup با مشکل بر نخوریم ؟؟ مراحل کار را لطفا ....

با تشکر از همه

shahrzad87
دوشنبه 07 آذر 1390, 22:10 عصر
سلام
الان چند روز می شه که آقای gwbasic قسمت دوم پروژه رو تعریف کردن اما کسی کد ننوشته، این بار هم من شروع می کنم و اولین پروژه رو می گذارم که این تایپیک و آموزش ادامه پیدا کنه.
مطمئنا کامل کامل و خالی از اشکال نیست... راستش من مدتی هست که خودم درگیر یه پروژه هستم و نتونستم برای این پروژه خیلی وقت بگذارم، فقط سعی کردم حداقل ها رو داشته باشه.
خوشحال می شم که شما دوستان ایرادهای کارم رو بگین و کاملترش کنین :چشمک:

این هم اسکریپت دیتابیس :

USE [storeDB]
GO
/****** Object: Table [dbo].[Product] Script Date: 11/28/2011 22:34:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Product](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Name] [nvarchar](50) NULL,
[Price] [int] NULL,
CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Customer] Script Date: 11/28/2011 22:34:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Name] [nvarchar](50) NULL,
[Family] [nvarchar](50) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Default [DF_Product_Id] Script Date: 11/28/2011 22:34:22 ******/
ALTER TABLE [dbo].[Product] ADD CONSTRAINT [DF_Product_Id] DEFAULT (newid()) FOR [Id]
GO
/****** Object: Default [DF_Customer_Id] Script Date: 11/28/2011 22:34:22 ******/
ALTER TABLE [dbo].[Customer] ADD CONSTRAINT [DF_Customer_Id] DEFAULT (newid()) FOR [Id]
GO

haniyehghassami
سه شنبه 08 آذر 1390, 14:41 عصر
سلام

یه چیز باحال :
عیب های این برنامه را هر کی تونست پیدا کنه جایزه داره ::لبخند:

noroozifar
سه شنبه 08 آذر 1390, 18:11 عصر
منهم مشکل دارم نمیدونم چرا اینجوری میشه بصورت فیلم گذاشتم یکبار خوبه مشکلی ایجاد نمیشه یعنی اطلاعات نمیپره یکبار هم که اجرا میکنی میبینی خالیه بانک ؟؟
این خود برنامه :
http://s2.picofile.com/file/7198115371/Store1.rar.html (http://s2.picofile.com/file/7198115371/Store1.rar.html%DA%AF)
اینم فیلم :

http://s1.picofile.com/file/7198152361/Untitled.swf.html
بخشید اگر یک مقدار لهجه داره داخل فیلم : :قهقهه:

noroozifar
پنج شنبه 10 آذر 1390, 02:37 صبح
ما هر چی اینجا منتظر شدیم تا آموزش جدید بیاد کسی نیامد و جواب سئوالات ما را هم ندادند به خاطر همین اینبار با عکس میگذارم تا ببینم کسی جواب میده یا نه ؟؟؟

بیین این نمای اول solutoin explorer
http://s1.picofile.com/file/7199485157/2011_12_01_021731.png
بقیه عکس ها را برای اینکه حجم تاپیک بالا نره فقط لینک میگذارم
من می خواهم حالتی را ایجاد کنم که دیتا بیس به بانک attach بشه امدم در فولدر data ازadd>new>existing item فایل storedb.mdf را اضافه کردم بعد امدم از قسمت models یک مدل جدید ایجاد کردم و باتوجه به دیتابیس کانکش و جدولها را انتخاب کردم برنامه اجرا میشه داده ها اضافه می شوند به جدول اما نمیدونم به محض اینکه من در کد برنامه تغییری را ایجاد کردم و برنامه را اجرا کردم مقادیر قبلی یعنی رکورد های قبلی که به بانک اضافه کردم نیستند از بین میرند

الان چند شبه دارم پیگیری میکنم هر جا سر میزنم تا مشکل را حل کنم نمیشه علت اینکار هم به این دلیله اگر پروژه را برروی سیستم دیگری انتقال دادم یا یک پروژه نصب ایجاد کردم دیگه مشکل اینکه اول برم بانک را به اس کیو ال attach کنم نداشته باشم خودش اینکارو انجام بده
این مرحله اخر بعد از اینکه بانک و مدل را به پروژه اضافه کردم :
http://s1.picofile.com/file/7199486234/2011_12_01_022947.png
این هم محتویات داخل app
<add name="StoreDBEntities" connectionString="metadata=res://*/Models.StoreModel.csdl|res://*/Models.StoreModel.ssdl|res://*/Models.StoreModel.msl;provider=System.Data.SqlClie nt;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Data\StoreDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

اینم لینک سایر عکسها از مراحل کار :
http://s2.picofile.com/file/7199485371/2011_12_01_021852.png
http://s1.picofile.com/file/7199485585/2011_12_01_021929.png
http://s1.picofile.com/file/7199485692/2011_12_01_022011.png
http://s2.picofile.com/file/7199485806/2011_12_01_022054.png
http://s1.picofile.com/file/7199486127/2011_12_01_022835.png

لااقل جواب مشکلات مردمو بدید اقا چرا مردم را اذیت میکنید یا تاپیک نزنید اینهم اموزشی یا اگر میزنید ادامه بدید کلاس دیگه نگذارید :شیطان::قهقهه: (اینهم یک نمونه اعصبانیت و اعتراض )

gwbasic
پنج شنبه 10 آذر 1390, 10:41 صبح
جناب noroozifar منو ببخشید که دیر جواب می دم چون می خواستم کدتون رو نگاه کنم و نکاتی رو در مورد کدتون بگم ولی فرصت نکردم
اما نکته ای که شما مشکل دارید اگه پست های منو حداقل (نه تو این تاپیک) دنبال کرده بودین جواب این سوالو دارم!!!
مشکلی که شما مطرح کردین مشکل نیست یه رفتار طبیعی هست که از Visual studio سر می زنه. هنگامی که شما تغییری توی کد ایجاد می کنید برنامه هنگام اجرا ابتدا Build میشه و فایلهای جدید توی فولدر Bin ریخته می شه بنابراین فایل StoreDB شما هم که در فولدر DataAccess برنامتون قرار داره دوباره توی Bin ریخته می شه و شما موقع اجرا می بینید که اطلاعات ازبین رفته چون شما داده هاتون رو از StoreDB که توی Bin هست می خونید (در اصل فایلی که در کنار Exe قرار می گیره) جای نگرنی هم نیست چون این مسئله هنگام Develop پیش می یاد. و جای دیگه چون شما فقط یک فایل StoreDBکنار exe دارین این اتفاق نمی افته. امیدوارم متوجه شده باشین

در مورد کدتون هم بعدا توضیح می دم

noroozifar
پنج شنبه 10 آذر 1390, 12:35 عصر
با تشکر از شما
بله من به این موضوع امروز قبل از پاسخ شما پی بردم چه اتفاقی رخ میدهد و برای اینکه این مشکل را در محیط برنامه نویسی حل کنم به قسمت app.config رفتم و آدرس attach را از AttachDbFilename=|DataDirectory|\Data\StoreDB.mdf به آدرس اجرای برنامه تغییر دادم AttachDbFilename=D:\TAMRINAT C#\TestEF2\TestEF2\Data\StoreDB.mdf و مشکل بر طرف شده و نکته اینجاست که من باید بعد از اجرا کامل پروژه دوباره آدرس attach کردن بانک را به حالت اول بر گردانم ..

از شما متشکرم خواهشا آموزش های جدید را بگذارید یک پروژه بزرگ دارم و می خواهم از معماری EF استفاده کنم و وقت کافی متاسفانه ندارم داخل کدهایم خواستم از storeprocdure استفاده کنم ....... که هنوز موفق نشدم منتظریم اقای مدیر :خجالت:

gwbasic
پنج شنبه 10 آذر 1390, 17:55 عصر
و اما کد جناب Noroozifar
چند مورد رو اشاره مي کنم در ادامه سعي کنيد رعايت کنيد:
1- از متد Fill‌ براي پر کردن گريد استفاده شده ولي چرا از امکانات EntityFramework‌براي حفظ و نگهداري و تغيير داده هايي که گرفته شده استفاده نکرديد.
2- براي پر کردن TextBox ها از Binding بايد استفاده ميشد BindingSource اين کارو براي شما ساده مي کنه که اصلا استفاده نکرديد.
3- براي اينکه مشخص کنيد فرم در حالت ويرايش هست از Tag مربوط به btnSave استفاده کردين که البته راه اشتباهي نيست ولي بهتره هيچ وقت از منطقتون رو توي UI قرار ندين و از اونجا بگيرين!!!
بهتره مثل IsDirty که توي ويديو بکار بردم شما هم فيلدي براي اين کار تعريف کنيد و هرجا لازم داشتيد از اون فيلد استفاده کنيد به کد زير توجه کيند:
براي حالت هاي مختلف فرم (اضافه يا ويرايش) اول يک enum تعريف مي کنم


public enum FormMode
{
Add,
Edit
}

سپس يک فيلد در سطح فرم تعريف ميکنم



private FormMode formMode;


حالا هرجا خواستم حالت فرم رو در اين فيلد ذخيره مي کنم مثلا توي متد Edit بجاي ست کردن btnSave.Tag‌ مي نويسيم




formMode = FormMode.Edit;



و در نهايت هنگام ذخيره ( متد Ok !؟!؟!؟؟)


switch (formMode)
{
case FormMode.Add:
Insert();
break;
case FormMode.Edit:
UpTodate();
break;
default:
break;
}



4- براي توليد Id جديد يه کد غيره بهينه نوشتيد. چرا؟ ترجيح مي دم فقط کدتون رو بذارم بقيه دوستان توضيح بدن


private Int64 Next()
{
Int64 valu = 0;
try
{
using (StoreDBEntities Context = new StoreDBEntities())
{
// string Querystring = "Select VALUE c From Context.tblCustomers AS c";
var objQuery = Context.tblCustomers;
foreach (var item in objQuery)
{
if (item.Id > valu)
valu = item.Id;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return (valu + 1);
}


5- در متد delete شما از EntityCommand‌ استفاده کردين ديگه نيازي به new کردن Context نيست
6- با اين روش پياده سازي که شما انجام دادين چرا توي Cancel متد Fill‌رو صدا زدين نيازي نيست

noroozifar
پنج شنبه 10 آذر 1390, 18:57 عصر
- از متد Fill‌ براي پر کردن گريد استفاده شده ولي چرا از امکانات EntityFramework‌براي حفظ و نگهداري و تغيير داده هايي که گرفته شده استفاده نکرديد.
2- براي پر کردن TextBox ها از Binding بايد استفاده ميشد BindingSource اين کارو براي شما ساده مي کنه که اصلا استفاده نکرديد. چون از BindingSource استفاده نکردم می بایست به یک طریق اطلاعات داخل دیتا گرید را refresh کنم به خاطر همین متد Fill را نوشتم و بعد من دارم هنوز امکانات مختلف entity framework را یاد میگیرم هنوز به طور کامل حفظ و نگهداری و تغییر داده ها را بلد نیستم با این روش

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

3- براي اينکه مشخص کنيد فرم در حالت ويرايش هست از Tag مربوط به btnSave استفاده کردين که البته راه اشتباهي نيست ولي بهتره هيچ وقت از منطقتون رو توي UI قرار ندين و از اونجا بگيرين!!!این روشی که شما توضیح دادید خیلی خوبه از این به بعد از این روش استفاده میکنم تا کدها ساختار و خوانایی بهتریی پیدا کنند


4- براي توليد Id جديد يه کد غيره بهينه نوشتيد. چرا؟ ترجيح مي دم فقط کدتون رو بذارم بقيه دوستان توضيح بدنببینید من می خواستم با این روش در اصل ردیف را ایجاد کنم که رکوردها را شمارش کنه شما درست میگید منتطقی نیست و مشکلی که پیش میاد زمان حذف یک رکورد مثلا اگر من 4 رکورد داشته باشم شمارش id که به عنوان شماره ردیف استفاده کرده ام به صورت 1و2و3و4 می شود حالا در نظر بگیرید من رکورد 2 را حذف کنم شماره ردیف ها یا همان id ها به صورت 1و3و4 می شود میبیند شماره ردیف ها بهم خورده ولی به طور کلی همیشه ای دی که ایجاد میشه منحصر به فرد هستش ....
خوب حالا می خواستم بدونم برای اینکه شماره ردیف ها در یک دیتا گرید به درستی نمایش داده بشه بهتره چه کنم ؟؟؟

- در متد delete شما از EntityCommand‌ استفاده کردين ديگه نيازي به new کردن Context نيستمن خواستم فقط بدونم به چه طریق میشه از EntityCommand‌ و پروسیجرهای نوشته شده در خود دیتابیس استفاده کنم ولی موفق نشدم و با Error مواجه شدم و میبیند کدهای قسمت حذف رکورد ناقصه منتظرم تا این مورد را آموزش بدهید

- با اين روش پياده سازي که شما انجام دادين چرا توي Cancel متد Fill‌رو صدا زدين نيازي نيست اگر نگاه کنید متد Cancel در انتهای عمل insertو Edit صدا شده و بهمین دلیل fill را داخل Cancel قرار دادم می توانستم قرار ندهم و بعد از متد cancel متد fill را صدا بزنم کلا برای اینکه یک refresh کامل صورت بگیرد بعد از اینکه کاربر لغو عملیات را زد اینکار را انجام دادم

در نهایت واقعا از شما ممنونم کدهای من را با کمال دقت بررسی کردید و اشتباهات من را بهم گفتید ... من منتظر آموزشهای جدید شما هستم .... امیدوارم شما و کل کاربران این سایت همیشه موفق باشند

noroozifar
جمعه 11 آذر 1390, 10:34 صبح
سلام
فکر کنم تو این تاپیک فقط من پست میدم
همینجور که آقای مدیر گفتند خواستم از BindingSourc استفاده کنم بنابر این یک bindingsource ایجاد کردم و دیتاگرید و تکست باکس ها ربهش وصل کردم اما با این تفاوت که از bindingnavigator نمی خواهم استفاده کنم بنابر این در رویداد new این کدها را نوشتم :

private void New()
{
try
{
grpGrid.Enabled = false;
grpValues.Enabled = true;

bsCustomer.AddNew();
btnSave.Tag = "btnNew";
btnEdit.Enabled = false;
btnNew.Enabled = true;
btnDelete.Enabled = false;
btnSave.Enabled = true;


}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
و در رویداد save هم این را نوشتم :

private void Insert()
{
try
{
bsCustomer.EndEdit();
Context.SaveChanges();
MessageBox.Show("ذخیره شد");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

اما کار نکرد و رکوردهای خالی یا غیر منطقی وارد میکنه البته توجه کنید که من کد ID را خودم ایجاد میکنم ؟
اینهم کدها : اگر امکان داره مشکلم را بر طرف کنید :
http://s2.picofile.com/file/7200708709/Store1.rar.html

linux
جمعه 11 آذر 1390, 16:27 عصر
سلام

یه چیز باحال :
عیب های این برنامه را هر کی تونست پیدا کنه جایزه داره ::لبخند:
اگر قرار باشد که پروژه حرفه باشد خوب همش عیب بود من حسنی ندیدم.

gwbasic
جمعه 11 آذر 1390, 19:43 عصر
نمی دونم چرا از BindingNavigator استفاده نمی کنی ولی بهر حال مورد خوبی مطرح شد.
همونطور که خودت توی کد نوشتی برای ایجاد یک customerجدید از متد AddNew‌مربوط به BindingSource استفاده کردی که کاملا درسته و Customer جدید به درستی ایجاد شده اما مشکل شما اینه که می خوای خودت Id جدید رو مقدار دهی کنی!
برای این کار وقتی شی جدید به BindingSource اضافه می شه رویداد AddingNew اتفاق می افته شما می تونی از این رویداد به شکل زیر برای مقدار دهی Id استفاده کنی

private void bsCustomer_AddingNew(object sender, AddingNewEventArgs e)
{
tblCustomer newCustomer= new tblCustomer();
newCustomer.Id = Next();
e.NewObject = newCustomer;
}

noroozifar
یک شنبه 13 آذر 1390, 14:01 عصر
نمی دونم چرا از BindingNavigator استفاده نمی کنی ولی بهر حال مورد خوبی مطرح شد.

علتش فقط بر میگرده به طراحی فرم

gwbasic
یک شنبه 13 آذر 1390, 14:43 عصر
BindingNavigator امکان هر جور تغییر در ظاهر رو داره. شما هر تغییری که بخوای می تونی روی اون انجام بدی. اون Toolstrip ای که خود BindingNavigator روی فرم قرار می ده رو شما می تونی کلا پاک کنی و کنترل های مورد نظر خودت رو بندازی مثلا می تونی همه اون Button هایی که توی پروژت گذاشتی رو به BindingNavigator بدی و بذاری کارای تکراری مثل اضافه و ... رو BindingNavigator خودش انجام بده.
اگه به نکته ای اشاره می کنم فقط منظورم اینه که راهی باز بشه برای بررسی جدید برای شما یکم به نکته ای که اشاره می کنم دقت کنید. حالا این نکته می تونی یکم وقت گیر باشه مثل BindingNavigator که کامل به چندو چون کار آشنا بشی و یا می تونه خیلی ساده بشه مثل موارد 4 یا 6 که در پست های قبلی گذاشتم. دقت کن که من جواب نمی خوام بلکه می خوام بیشتر بررسی کنی و خودت نتیجه رو همینجا بگی (چون من جواب رو می دونم)

noroozifar
یک شنبه 13 آذر 1390, 23:29 عصر
من باید تمامی موارد EF را یاد بگیرم اضافه .. حذف ... جستجو(پیشرفته) ... ویرایش .... استفاده از پرسیجرهای نوشته شده در اس کیو ال ... در نهایت پروژه ای که دارم باید در معماری 3 لایه پیاده سازیش کنم ... و همیشه کدهایم را دستی می نوشتم و حالا می خواهم از شیوه های جدیدتر و با کد نویسی بهینه تر و خیلی موارد دیگر... من هر روز 3 الی 4 بار به این تاپیک سر میزنم تا از شما اساتید بیشتر یاد بگیرم و منتظر آموزشها، نکات کلیدی و غیره هستم ... هر مورد را چندین بار با اینکه وقتم محدوده بررسی میکنم تا اینکه همه چیز کامل دستم بیاد
بر روی BindingNavigator هم کار میکنم .... اگر کارایی این مورد زیاد باشه و باعث ایجاد راحتی کار بشه

noroozifar
دوشنبه 14 آذر 1390, 17:48 عصر
الان دارم از bindingnavigator استفاده میکنم می خواهم قبل از حذف یک پیغام بده امدم و این کد را به رویداد کلیک حذف دادم اما قبل از پیغام رکورد را حذف میکنه بعد پیغام میده ؟؟؟:متفکر: چه کنم ؟؟؟

private void btnDelete_Click(object sender, EventArgs e)
{
DialogResult Result = MessageBox.Show("رکورد مورد نظر حذف شود ؟", "حذف رکورد", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (Result == DialogResult.No)
{
bsCustomer.CancelEdit();
}
}

haniyehghassami
دوشنبه 14 آذر 1390, 18:17 عصر
اگر قرار باشد که پروژه حرفه باشد خوب همش عیب بود من حسنی ندیدم.


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

1 - من تو فرم مشتریم اشتباها tag هم به دیتا بیسم بایند کرده بودم که واسه همین خطای null reference میداد البته اگه تو جدول مشتریallow null را true میکردم خطای run time نمیداد اما در ازاش خطای دیگه ای اتفاق می افتاد اونم اینکه رشته ای خالی در جدولم ثبت میشد----> راه حلش هم این بود که من اشتباهی علاوه بر تکسته تکس باکسم ؛ تگ هم بایند کردم در نتیجه پاکش کردم درست شد.:لبخند:

2 - در فرم محصولات بعد از اینکه دکمه ثبت داده را میزدم فرمم بسته نمی شد و برنامم هنگ می کرد بعد از اینکه با کمک استاد چک کردیم فهمیدیم که چون واسه قیمت محصول ما int تعریف کردیم و چون واسه امتحانی رشته وارد کردیم string را میخواسته جای int بگذاره که نمی شده واسه همین هنگ میکرد----> توی proprieties همون تکس باکس قیمت رفتم و گزینه ی causesValidation را false کنین..اما قبل این همه کار میشه توی keyPress تکس فیمت کذ زیر را نوشت واسه اینکه کاربر تنها قادر باشه عدد وارد کنه

private void txt_gheymat_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled=(char.IsDigit(e.KeyChar)||char.IsControl (e.KeyChar))?false:true;
}

gwbasic
دوشنبه 14 آذر 1390, 23:32 عصر
الان دارم از bindingnavigator استفاده میکنم می خواهم قبل از حذف یک پیغام بده امدم و این کد را به رویداد کلیک حذف دادم اما قبل از پیغام رکورد را حذف میکنه بعد پیغام میده ؟؟؟:متفکر: چه کنم ؟؟؟

private void btnDelete_Click(object sender, EventArgs e)
{
DialogResult Result = MessageBox.Show("رکورد مورد نظر حذف شود ؟", "حذف رکورد", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (Result == DialogResult.No)
{
bsCustomer.CancelEdit();
}
}

مرسی به مورد جالبی اشاره کردی. متاسفانه این bindingNavigator این ضعف رو داره که اول آیتم جاری رو پاک می کنه بعدا کد های شما اجرا می شه و حتی BindingSource‌ هم بهتون کمک نمی کنه چون توی رویداد ListChanged تغییرات اعمال شده (یعنی آیتم پاک شده) بنابراین باز شما نمی تونی با کد جلوی پاک شدن رو بگیری !!!
یک راه ساده اینه که شما bindingnavigator رو انتخاب کرده و در پنجره Properties روی DeleteItem کلیک کرده و مقدار اونو پاک کنی این کار باعث می شه که فقط کدهای شما اجرا بشه ودر نهایت کدتون رو به شکل زیر تغییر بدین

if (bsCustomer==null)
return;
if (bsCustomer.Current==null)
return;
DialogResult Result = MessageBox.Show("رکورد مورد نظر حذف شود ؟", "حذف رکورد", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
if (Result == DialogResult.Yes)
{
bsCustomer.RemoveCurrent();
}

که البته راه کثیفی هست.

احتمالا یک BindingNavigator مناسب برای این حالت و همچنین با قابلیت ویرایش و لغو بنویسم

noroozifar
سه شنبه 15 آذر 1390, 13:32 عصر
فکر کنم به روش قدیمی بریم بهتره یعنی از BindingSource‌ و bindingnavigatorکلا استفاده نکنیم و تمامی کدها را با بهره گیری از EF خودمان بنویسیم ...

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

gwbasic
سه شنبه 15 آذر 1390, 21:15 عصر
وقتی database رو تغییر بدی می تونی توسط EDM Designer مدل ها تو Update‌ کنی.

BindingSource و BindingNavigator تعریف و کاربرد خودشونو دارن. اگه سر کلاسم بودی حتما سرت داد می زدم :عصبانی: امیدوارم ویدیو جدید که تا چند دقیقه دیگه می ذارم مشکلتو حل کنه. تا وقتی نصفه نیمه بخوای هر چیزی یاد بگیری یا در حدی که کارتو بخواد راه بندازه همینطوری می شه باید همه چیزو کنار بذاری

noroozifar
چهارشنبه 16 آذر 1390, 12:17 عصر
باید همه چیزو کنار بذاری نه کنار نمیگذارم هرگز باید یاد بگیرم

منتظر ویدئو هستم

gwbasic
چهارشنبه 16 آذر 1390, 13:32 عصر
ویدیوی جدید رو توی تاپیک اصلی گذاشتم
http://barnamenevis.org/showthread.php?313523-کارگاه-عملی-ساخت-پروژه-ثبت-سفارشات-مرحله-به-مرحله&p=1376271#post1376271

pedramfj
پنج شنبه 17 آذر 1390, 18:00 عصر
سلام
من می خواهم این فیلم های آموزشی را دانلود کنم . اما نمیشه.
مشکل از کجاست؟
اگر امکانش هست در جایی دیگر...
تشکر

electro_esma
جمعه 18 آذر 1390, 10:53 صبح
با تشکر از استاد gwbasic لطفا از بحث های جانبی ناراحت نشید . با این که من این روز ها به دلایلی وقتم خیلی کم شده ولی خداشاهده که اگه شده چند

دقیقه ای هم که شده می یام و صحبت های شما رو نگاه می کنم .

خدا قوت .

بحث های حاشیه ای همیشه هست استاد بزرگوار ... و من ا.. توفیق

uniqueboy_ara
جمعه 18 آذر 1390, 22:06 عصر
آقا من یه سوال فنی داشتم، کار این "_" چیه؟؟؟ که قبل از بعضی متغییر ها موقع تعریفشون میزارن؟؟؟

wolf_majid
جمعه 18 آذر 1390, 22:45 عصر
معمولا" برنامه نویسان برای متغیرهای private میذارند
دلیلش هم اینه که با یک _ متغیرهایی که خودشون تعریف کردند رو می بینند و با سایر متغیرها و متدها و ... متمایزشون می کنند

linux
جمعه 18 آذر 1390, 22:54 عصر
ویدیوی جدید رو توی تاپیک اصلی گذاشتم
http://barnamenevis.org/showthread.php?313523-کارگاه-عملی-ساخت-پروژه-ثبت-سفارشات-مرحله-به-مرحله&p=1376271#post1376271

خیلی داری زحمت می کشی برای آموزش به بقیه ولی من دوست داشتم که کمی روی طراحی سه لایه ، الگوهای طراحی، و این چیزها وقت بگذاری، واقعا نیاز خیلی از برنامه نویس ها هست، اکثر دوستان این مدل برنامه می نویسند. پروژه ای برای همین کار ایجاد کردم چندتا نکته کوچک هست اگر تمام شود بزودی اینجا قرار می دهم.

mmd2009
جمعه 18 آذر 1390, 23:00 عصر
خیلی داری زحمت می کشی برای آموزش به بقیه ولی من دوست داشتم که کمی روی طراحی سه لایه ، الگوهای طراحی، و این چیزها وقت بگذاری، واقعا نیاز خیلی از برنامه نویس ها هست، اکثر دوستان این مدل برنامه می نویسند. پروژه ای برای همین کار ایجاد کردم چندتا نکته کوچک هست اگر تمام شود بزودی اینجا قرار می دهم.

با سلام

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

موفق باشید

farzane-ms
جمعه 18 آذر 1390, 23:12 عصر
آقا من یه سوال فنی داشتم، کار این "_" چیه؟؟؟ که قبل از بعضی متغییر ها موقع تعریفشون میزارن؟؟؟

اول اسم فیلدهایی که براشون پراپرتی تعریف میشه میذارن، احتمالا برای خواناتر بودن کده (و از استانداردهاست) نذاشتنش هم مشکلی پیش نمیاره.
ساختار کلی تعریف پراپرتی:


private DataType _var;
public DataType var
{
get{return _var}
[set{_var=value}]
}

mmd2009
جمعه 18 آذر 1390, 23:38 عصر
آقا من یه سوال فنی داشتم، کار این "_" چیه؟؟؟ که قبل از بعضی متغییر ها موقع تعریفشون میزارن؟؟؟


با سلام

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

موفق باشید

farzane-ms
شنبه 19 آذر 1390, 01:01 صبح
خیلی داری زحمت می کشی برای آموزش به بقیه ولی من دوست داشتم که کمی روی طراحی سه لایه ، الگوهای طراحی، و این چیزها وقت بگذاری، واقعا نیاز خیلی از برنامه نویس ها هست، اکثر دوستان این مدل برنامه می نویسند. پروژه ای برای همین کار ایجاد کردم چندتا نکته کوچک هست اگر تمام شود بزودی اینجا قرار می دهم.

سلام
من طراحی سه لایه ، الگوهای طراحی، و این چیزها رو بلد نیستم. شاید حق با شما باشه که اینا نیاز خیلی از برنامه نویس هاست، اما این تاپیک و مطالبی که آموزش داده میشه برای من و کسای دیگه که مثل من برنامه نویس مبتدی هستن اهمیت خاص خودشو داره. لطفا سطح مطالب رو خیلی بالا نبرید تا ما مبتدی ها هم متوجه بشیم.
آقای gwbasic به خاطر زحمتی که می کشید تشکر میکنم و امیدوارم آموزش ها ادامه داشته باشه! :)

gwbasic
شنبه 19 آذر 1390, 08:37 صبح
توی تاپیک اصلی من فاز بندی های این پروژه رو مشخص کردم البته هیچ دلیلی وجود نداره طبق اون عمل بشه و می تونه این روند تغییر کنه.
من در فاز اول سعی می کنم که روش کدنویسی پشت فرم ها رو آموزش بدم که چطور موجودیت ها پشت فرم تعریف بشه و به کنترل های فرم ارتباط داده بشه و در نهایت منطق برنامه با کنترل های فرم بطور مستقیم گره نخوره. مخاطب این فاز هم قطعا افراد مبتدی و کم تجربه هستند.
در نتیجه در مورد چند لایه نویسی کمی صبر کنید تا این فاز تموم شود.
اما اینکه چطور چند لایه نویسی بر اساس EntityFramework پیاده سازی شود من فکر میکنم راه بهتر پیاده سازی بر اساس CodeFirst هست در نتیجه نیاز به آشنایی با این مفهوم در EF هست بنابراین یک سری مقدمات هست که باید آموزش داده بشه
البته مشتاقم نظر شما رو در این زمینه بدونم شاید راه ساده تری رو داشته باشید.

دوستانی که علاقمند به ادامه این آموزش هستند لطفا کمی همکاری کنند من واقعا نمی دونم این آموزشها مفید هستند یا نه و یا اینکه اگه روش آموزش ایراد داره پیشنهاد بدن.

noroozifar
شنبه 19 آذر 1390, 17:50 عصر
آقای مدیر gwbasic برای من آموزشهایت خیلی خیلی مهم هستند همینجور که میدونید من از اول این تاپیک دارم با شما گام به گام میام جلو و اگر این تاپیک را ادامه ندید واقعا دلسرد میشم برای من مفیدن من هم دارم همراه شما میام که معماری 3 لایه برسم ... پروژه من باید تحت 3 لایه ایجاد بشه و هر چه زودتر به لایه ها و مفاهیم ان برسم برام بهتره از این رو هر وقت هم فرصت بکنم دارم پی دی اف خانم julia lerman را نیز مطالعه میکنم اما متاسفانه زبان انگلیسیم زیاد قوی نیست و هر خطش برای درکش نیاز به یکی، 2 ساعت وقت دارم :ناراحت: با این حال تصمیم با شماست ... اکثر پروژهای تا حالا من کار کردم نرم افزارهای مدیریتی بوده و تحت ویندوز و اس کیو ال بنابراین به روشها و کدهای بهینه برای برنامه نویسی پیشرفته نیاز دارم ... باز از زحمات شما ممنونم

haniyehghassami
شنبه 19 آذر 1390, 23:37 عصر
سلام به همه ی دوستای خوبم
اول میخواستم یه توضیح مختصر راجب این خصوصیت ها بدم بهتون که امییدوارم مفید باشن :


خصوصیات در اصل حالتی هستند که مکانیزمی انعطاف پذیر برای خواندن ، نوشتن یا محاسبه ی مقادیری از فیلدهای اختصاصی(private fields) ؛ هستند
این خصوصیت ها می توانند بعنوان اعضای دیتای عمومی مورد استفاده قرار بگیرند، اما درواقع اونها شامل متدهای خاصی بنام (accessors) هستند که باعث میشوند دیتاها براحتی فابل دسترسی باشند در زمانی که ما متدهای قابل انعطاف و امن تولید میکنیم.

این خوصیات به کلاس ما این توانایی را میدهد که مقادیر قابل تنظیم(set) و مقادیر گرفته شده (get) که بصورت خصوصی(private) در کلاس تعریف شدند در معرض تماشا قرار دهد و قابل دسترسی کند.

دستور (get) برای این است که ارزش ان مقدار را برگرداند و دستور (set) برای برای تنظیم مقدار جدید این خصوصیت تعریف میشود
این سطح دسترسی می تواند در سطوح مختلف تعریف شوند

کلمه کلیدی valueبرای این است که در دستور (set)مقداری برای ان اختصاص داده است.

خصوصیاتی که شامل دستور set نیستند , فقط خواندنی هستند.

(گت) یک متذ قابل دسترسی را در خصوصیت یا ایندکسر مت تعریف میکنه که مقدار value را برمیگردونه


class TimePeriod
{
private double _seconds;
public double Seconds
{
get { return _seconds; }
set { _seconds = value; }
}
}


(ست)برای تعیین مفدار قابل نمایش در ان خصوصیت و اعمال یک سری شرایط بر روی ان

public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}

(ولیو)
ارزش کلمه کلیدی متنی در Set ارسال در تعریف خصوصیات معمولی مورد استفاده قرار می گیرد. این شبیه به یک پارامتر ورودی در یک روش است.



private string name;

// Override auto-implemented property with ordinary property
// to provide specialized accessor behavior.
public override string Name
{
get
{
return name;
}
set
{
if (value != String.Empty)
{
name = value;
}
else
{
name = "Unknown";
}
}
}






نکته 2 : غیرفعال کردن دیتاگرید در زمان ویرایش پس از یکبار کلیلک. که برای من جالب بود

نکته 3 : متدهایی که برای فعال یا غیر فعال کردن یکسری از ابزارهای روی فرم ؛ به جای اینکه برنامه نویس در رویداد کلیک دکمه ها بخواهد هربار اینها را بنویسد تنها متد مربوطه را صدا بزند

نکته 4 : نوشتن یک شرط باحال برای اینکه حالت صحیح یا غلط را برگردونه که من اینو بلد نبودم

tsbEdit.Enable=tsbDelete.Enable=bsProduct.count>0;


که در اینجا اگر حالت اخری جواب صحیح برگردونه پس کلا True میشن در غیر اینصورت False

masoud_z_65
شنبه 26 آذر 1390, 15:07 عصر
دوستان و استادادن عزیز واقعا ممنون..من با توجه به اینکه وقتم کمه و زیاد همحرفه ای نیستم که بتونم تو بحثاتون شکت کنم اما هرجور شده سعی میکنم هر روز به این تاپیک سر بزنم...خواستم تشکری کنم و همچنین یه سوال درمورد اینکه کسی کلا درمورد handle میتونه به من توضیح بده؟؟
کلا مفهومش چیه؟؟؟؟
یه سوال دیگه اینکه آیا توی پروژه های خیلی بزرگ هم از entity framework استفاده میکنند یا نه؟

gwbasic
یک شنبه 27 آذر 1390, 15:12 عصر
دوستان و استادادن عزیز واقعا ممنون..من با توجه به اینکه وقتم کمه و زیاد همحرفه ای نیستم که بتونم تو بحثاتون شکت کنم اما هرجور شده سعی میکنم هر روز به این تاپیک سر بزنم...خواستم تشکری کنم و همچنین یه سوال درمورد اینکه کسی کلا درمورد handle میتونه به من توضیح بده؟؟
کلا مفهومش چیه؟؟؟؟
یه سوال دیگه اینکه آیا توی پروژه های خیلی بزرگ هم از entity framework استفاده میکنند یا نه؟

کدوم handle اگه منظورتون handle فرم هست مطلب خاصی نیست وقتی فرمی در سیستم عامل نمایش داده می شه به اون فرم یک handle اختصاص داده می شه ولی ما هنگام کد نویسی معمولا نیاز به این نداریم که از handle استفاده کنیم. handle معمولا هنگام برنامه نویسی از طریق api استفاده می شه. در کل چیزی نیست که زیاد فکرتون رو مشغولش کنید.

در مورد EF باید بگم که بله حتما می شه در پروژه های بزرگ استفاده کرد. EF برای راحتی و ارتباط object Oreinted با پایگاه داده آمده.

mahsa_hashemi
یک شنبه 27 آذر 1390, 17:46 عصر
سلام من تازه با این تاپیک آشنا شدم.همین که دیدم بحث طراحی سه لایه ، الگوهای طراحی و... اینا هست و مثل اینکه میخواد تازه شروع بشه خواستم نظرم و بگم.واقعا این مطالب خیلی تو نت کمیاب هستن.و کمتر کسایی نخصص دارن.
من با نظر شما موافق نیستم چون مطالب مبتدی هرجا که بخوایین پیدا میشه.اما این جور مطالب که سطحشون بالاست کمیابه
اگه میشه جناب gwbasic بحث و آموزش رو در این ضمینه ادامه بدین تابتنیم بیشتر استفاده کنیم.
موفق باشین

سلام
من طراحی سه لایه ، الگوهای طراحی، و این چیزها رو بلد نیستم. شاید حق با شما باشه که اینا نیاز خیلی از برنامه نویس هاست، اما این تاپیک و مطالبی که آموزش داده میشه برای من و کسای دیگه که مثل من برنامه نویس مبتدی هستن اهمیت خاص خودشو داره. لطفا سطح مطالب رو خیلی بالا نبرید تا ما مبتدی ها هم متوجه بشیم.
آقای gwbasic به خاطر زحمتی که می کشید تشکر میکنم و امیدوارم آموزش ها ادامه داشته باشه! :)

farzane-ms
دوشنبه 28 آذر 1390, 20:00 عصر
سلام من تازه با این تاپیک آشنا شدم.همین که دیدم بحث طراحی سه لایه ، الگوهای طراحی و... اینا هست و مثل اینکه میخواد تازه شروع بشه خواستم نظرم و بگم.واقعا این مطالب خیلی تو نت کمیاب هستن.و کمتر کسایی نخصص دارن.
من با نظر شما موافق نیستم چون مطالب مبتدی هرجا که بخوایین پیدا میشه.اما این جور مطالب که سطحشون بالاست کمیابه
اگه میشه جناب gwbasic بحث و آموزش رو در این ضمینه ادامه بدین تابتنیم بیشتر استفاده کنیم.
موفق باشین

سلام mahsa_hashemi
تجدید نظر میکنم، با آموزش مباحث گفته شده 100% موافقم! :چشمک:

و منتظر آموزش ها...

Abolfazl.programmer
سه شنبه 29 آذر 1390, 15:39 عصر
سلام
من برنامه رو طبق آموزش ها ساختم اما زمانیکه روی دکمه ی save کلیک برای بار اول اطلاعات رو ذخیره میکنه اما برای بار دوم خطا میده و از برنامه میاد بیرون.
برنامه رو گذاشتم
اگه امکانش هست منو راهنمایی کنید
ممنون
رمز فایل هم 123321
http://up7.iranblog.com/images/ak9xbuv9eyyu13puggg3.rar

gwbasic
سه شنبه 29 آذر 1390, 16:18 عصر
سلام
من برنامه رو طبق آموزش ها ساختم اما زمانیکه روی دکمه ی save کلیک برای بار اول اطلاعات رو ذخیره میکنه اما برای بار دوم خطا میده و از برنامه میاد بیرون.
برنامه رو گذاشتم
اگه امکانش هست منو راهنمایی کنید
ممنون
رمز فایل هم 123321
http://up7.iranblog.com/images/ak9xbuv9eyyu13puggg3.rar

اگه ویدیو اول رو بدقت دیده باشید من این مورد رو توضیح دادم. این مسئله باگ ویژوال استودیو هست. وقتی شما در Edm Designer روی یک Entity کلیک کرده و Id رو انتخاب کنید. در پنجره پراپرتی StoreGeneratedPattern = Identity قرار بدید هنگام تولید تگ این مورد لحاظ نمی شه که در سرویس پک یک این مسئله برطرف شده. برای حل اون هم همانطور که در ویدیو اشاره شد باید این مورد رو خودتون به صورت دستی اضافه کنید.

درضمن یادتون باشه که اگه Entity جدیدی اضافه کردین و یا update انجام دادین باز این مسئله پیش میاد که باید دوباره دستی این کارو انجام بدین البته جای نگرانی نیست چون همونطور که گفتم در سرویس پک یک ویژوال استودیو حل شده.

به همه دوستان پیشنهاد می کنم این آموزش ها رو چندین بار ببینین و حتما تموم کدها رو خودتون بنویسین تا کامل جا بیافته چون دوستانی که کداشونو به من نشون میدن (حالا اسمشونو نمی گم :چشمک:) باز هم به روش خودشون کد می نویسن

بابت دیر شدن آموزش های بعدی از همه عذر خواهی می کنم چون مطالب ویدیو بعدی که ساخت فرم سفارش هست خیلی زیاده و هنوز نتونستم به طور کامل جمع و جور کنم

haniyehghassami
چهارشنبه 07 دی 1390, 23:16 عصر
سلام
من بعد از مدت ها اخر تونستم بیام اینجا ( اما خیلی سوت و کور شده که باید از این وضعیت در بیاد)
من یه سوال واسم پیش امده؟؟؟؟؟
کلا این Binding source کارش چی هست؟
واسه چی هست؟
ماهیتش چیه؟ یعنی چه جنسیه؟ یعنی کلاسه ؟ جدوله؟ ...؟ کلا یکی این رو میشه واسه من یاز کنه که دقیقا Binding source کارش چیه؟
دیگه کجاها به درد میخوره ؟
فواید و نواقصش چیه؟
اییییییی بابا چقدر سوال داشتم ؟؟؟؟؟ تراخدا یکی این کلاف پیچ در پیچ Binding source را واسم باز کنه ؟؟؟:متعجب::متفکر::لبخند::عصب نی++:

noroozifar
پنج شنبه 08 دی 1390, 16:25 عصر
از bindingsource ایا می شود به روش معماری 3 لایه استفاده کرد ؟ آقای مدیر آموزش جدید ؟

gwbasic
پنج شنبه 08 دی 1390, 17:32 عصر
در مورد BindingSource هم توی پروِژه به صورت ویدیویی آموزش دادم که چه کار می کنه و هم توی امضام لینک "آموزش Data Binding" رو گذاشتم که توی اون تاپیک کامل توضیح دادم که Data Binding چی هست و چطور از BindingSource برای Binding استفاده می کنیم. نمی دونم چرا سوال می کنید؟!
کلا binding ارتباطی رو بین کنترل و موجودیت برقرار می کنه. چرا نشه توی معماری چند لایه ازش استفاده کرد. شما موجودیتتون رو از لایه Data Access‌می گیرید و با استفاده از binding به کنترل های فرم وصل می کنید.

برای آموزش بعدی شاید حدود 40 50 ساعت فقط وقت صرف کد نویسی کردم. و تازه همین الان که دارم این پست رو می زنم تموم شده! در ادامه نیاز هست که معماری Entity Framework رو خوب بدونید حداقل اینکه Object Context رو خوب بشناسید و بدونید که چطوری چند OC داشته باشید و Entity ها رو بین اونها جابجا کنید. در ادامه تکنیک هایی که استفاده می شه بخصوص در معماری چند لایه خیلی قابل استفاده هستند. و دونستنشون مهم هست.

امیدوارم امشب بتونم ویدیو رو هم آماده کنم

gwbasic
جمعه 16 دی 1390, 15:09 عصر
در تاپيک اصلي آموزش ساخت فرم سفارش رو گذاشتم. اميدوارم با اين آموزش به ارزش Entity Framework پي ببريد که چطور مي شه با استفاده از آن به صورت شي گرا با Database ارتباط بر قرار کرد و وظيفه ذخيره تغييرات رو به عهده EF گذاشت. همچنين اميدوارم نحوه ارتباط برقرار کردن بين چند فرم رو ببينيد و استفاده کنيد.
پيشنهاد مي کنم اين آموزش رو چندين بار ببينيد و مهمتر از اين سعي کنيد با سليقه خودتون کدنويسي کنيد و فرم سفارش رو بسازيد تا بيشتر با EF آشنا بشين و با خطاهاي احتمالي مواجه بشين تا کارکردن با ObjectContext برایتان جا بیافتد!!!

noroozifar
شنبه 17 دی 1390, 20:10 عصر
ممنونم اقای مدیر بابت زحماتی که کشیدی به زودی کدهای خودم را میگذارم تا نظر بدین

linux
دوشنبه 19 دی 1390, 12:27 عصر
این تاپیک را یک جوری همیشه در صفحه اول قرار دهید ، چون مشکل خیلی با خواندن این حل می شود

gwbasic
دوشنبه 19 دی 1390, 21:35 عصر
پیشنهاد خوبی هست. تاپیک اصلی آموزش رو اعلان کردم تا براحتی در دسترس باشه امیدوارم مورد استفاده قرار بگیره!
تا کسی خودش نخواد و تلاش نکنه مطمئنا پیشرفتی حاصل نمی شه. امیدوارم کسانیکه این آموزش ها رو دانلود می کنن دنبال آرشیو درست کردن نباشن که یه زمانی اگه وقت پیدا کردن ببینن. مطمئن باشن که اون وقت هیچ زمانی نمی رسه. پس بهتره در اولین فرصت شروع کنن و دست به کار بشن هرچی رو که یاد می گیرن بنویسن و تلاش کنن تا یاد بگیرن این مطالب حاصل سالها تجربس که در اختیار شما قرار می گیره چیزی نیست که توی کتابا بتونین به این سادگی دنبالش بگردین...

موفق باشین

noroozifar
سه شنبه 20 دی 1390, 11:42 صبح
سلام
آموزش سوم خیلی سخت بود و هم خیلی عالی خیلی چیزا فهمیدم و خیلی چیزا را یاد نگرفتم
کدها را مانند کدهای آقای مدیر سعی کردم بنویسم اما باز مشکل داشتم
در قسمت طراحی بانک اگر به اشتباه فیلدی را تعریف کرده و می خواهم تغییرات اعمال کنیم دوباره و ذخیره کنیم با پیغام ذخیره ای روبه رو می شویم که savetext داره حتما متوجه شدید کدام پیغامه اون را داخل sql server 2008 یک تیک داشت که بر میداشتی دیگه این پیغام نمیاد اما از داخل داخل ویژوال استودیو نمیدونم به چه طریق ؟
2. دومین مشکل من سر همین Attach و Detach خیلی سخته تا مفهوم درک کنم شاید به دلیل اینه که من از ساختار struct درک درستی ندارم همچنین این get و set همیشه استفاده میکنم اما هیچ موقعه نفهمیدم چی هستند :قهقهه:
بالاخره من این تاپیک را حسابی دنبال میکنم تا یاد بگیرم
کدهای خودم را گذاشتم و در فرم مشتری یک جستجو هم گذاشتم که از دستورات linq استفاده کرده ام به چند طریق جستجو با دستورات و نام خانوادگی مشتری

و اما فرم سفارش
1. دیتا گرید به bsorderdetails متصل کردم اما productName نیامد تو ستون های گرید؟
2. اخرش تو قسمت AddProductToCurrentOrderDetail به مشکل بر خوردم که نفهمیدم چه کنم

اینهم کدهای من : امیدوارم نظر بدهید و مشکلات من را توضیح بدهید
http://s2.picofile.com/file/7242996020/Store1.rar.html

masoud_z_65
سه شنبه 20 دی 1390, 15:47 عصر
یه سوال از استادان بزرگوتر.....
من درمورد entity Framework دارم کتاب آقای راد رو میخونم

میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?

به نظر خودم که model First خیلی روش بهتریه چون اول مدلت رو تعریف میکنی و تمام طراحیاتو انجام میدی و بعدش خودش برات بانک رو طراحی میکنه

اما گفتم شاید این روش برای پروژه های بزرگ جواب نده
میخواستم استادای عزیز تجربه هاشون رو کامل در اینمورد به ما هم منتقل کنند

و باز هم سپاس فراوان

gwbasic
سه شنبه 20 دی 1390, 19:32 عصر
سلام
آموزش سوم خیلی سخت بود و هم خیلی عالی خیلی چیزا فهمیدم و خیلی چیزا را یاد نگرفتم
کدها را مانند کدهای آقای مدیر سعی کردم بنویسم اما باز مشکل داشتم
در قسمت طراحی بانک اگر به اشتباه فیلدی را تعریف کرده و می خواهم تغییرات اعمال کنیم دوباره و ذخیره کنیم با پیغام ذخیره ای روبه رو می شویم که 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 به مشکل بر خوردم که نفهمیدم چه کنم

چه مشکلی؟

یه سوال از استادان بزرگوتر.....
من درمورد entity Framework دارم کتاب آقای راد رو میخونم

میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?

به نظر خودم که model First خیلی روش بهتریه چون اول مدلت رو تعریف میکنی و تمام طراحیاتو انجام میدی و بعدش خودش برات بانک رو طراحی میکنه

اما گفتم شاید این روش برای پروژه های بزرگ جواب نده
میخواستم استادای عزیز تجربه هاشون رو کامل در اینمورد به ما هم منتقل کنند

و باز هم سپاس فراوان
این دو مورد به لحاظ کار با DataBase‌ فرقی نمی کنند. مطمئن باشید برای پروِژه های بزرگ جواب می ده وگرنه من و امثال من هیچ وقت وقتمون رو صرفش نمی کردیم

Amir Oveisi
سه شنبه 20 دی 1390, 21:51 عصر
میخواستم ببینم کدوم روش رو اجرا کنم؟
Database First یا Model First?

به نظر من Code First (http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx)

noroozifar
چهارشنبه 21 دی 1390, 22:53 عصر
ستون را به چی Bind کردید چک کنید متوجه می شید!!!
من کلا قسمت دیتا سورس دیتا گرید را به bsOrderDetails قرار داده ام و خود bsOrderdetail قسمت دیتا سورس را به models.orderDetails داده ام ولی ستون prodoctname نداشت


. اخرش تو قسمت AddProductToCurrentOrderDetail به مشکل بر خوردم که نفهمیدم چه کنم



این هم مشکل که کدها و خطا در یک فایل تکست زمینه کردم :
80610

کل کدها و فایلها در لینک قبلی من هستش که منتظرم ببینم کجا و تو چه کدهای اشتباه کردهام یا بهتر کدها را به چه طریق بنویسم؟
کتاب چی بخونم یک کتاب معرفی کنید ؟

با تشکر از مدیر محترم

gwbasic
چهارشنبه 21 دی 1390, 23:14 عصر
از یه برنامه نویس توقع می ره که بتونه دیباگ کنه و مشکلو پیدا کنه! بیشتر سعی کن
کتاب Appress.Pro.Entity.Framework.4.0 رو می تونی بخونی حجمش خیلی کمه

noroozifar
پنج شنبه 22 دی 1390, 07:21 صبح
خیلی دید زدم متوجه خطام نمیشم ؟:اشتباه:

gwbasic
پنج شنبه 22 دی 1390, 14:33 عصر
من کدتو دیدم توی اون قسمت مشکلی نداشت!!! به هر صورت بعد از آموزش بعدی کد رو خواهم گذاشت میتونی مقایسه کنی

amir3321
جمعه 23 دی 1390, 18:01 عصر
با سلام خدمت جناب gwbasic
من یک کوئری با linq نوشتم و مقدار اون و به دیتا سورس dgv پاس کردم ولی در این حالت متد autosort در dgv که بصورت پیش فرض در dgv قرار دارد غیر فعال می شود می خواستم بدونم چطور می تونم با تغییر در نوع کوئری این مشکل رو حل کنم مثلا تبدیل کوئری به دیتاتیبل
البته این مشکل رو من در یک تاپیک جدا هم نقل کردم در صورت اضافه بودن حذف نمائید

gwbasic
یک شنبه 25 دی 1390, 17:56 عصر
با سلام خدمت جناب 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;
}


منبع (http://stackoverflow.com/questions/4463505/how-to-sort-datagridview-when-bound-to-a-binding-source-that-is-linked-to-an-ef4)

amir3321
دوشنبه 26 دی 1390, 09:37 صبح
با سلام
من کد شما رو چک کردم ولی نتونستم ازش استفاده کنم میشه یکم در باره _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;
}

notepad
دوشنبه 26 دی 1390, 13:35 عصر
سلام بر همه دوستان
من یه مشگلی که دارم اینه که پروژه هر کی و اجرا می کنم این خطا رو بهم میده.
The underlying provider failed on Open.
امکان راهنمایی هست؟

gwbasic
دوشنبه 26 دی 1390, 16:15 عصر
سلام بر همه دوستان
من یه مشگلی که دارم اینه که پروژه هر کی و اجرا می کنم این خطا رو بهم میده.
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 کنید

amir3321
دوشنبه 26 دی 1390, 18:04 عصر
با سلام
استاد خیلی دنبال حل مشکل گشتم ولی تو تمام فرومها این مشکل همینطور پا برجا بود می تونم با ساختن یک datatable و ریختن اطلاعات کوئری بصورت رکورد به رکورد داخل آن بوسیله foreach مشکل رو حل کنم ولی مقداری افت زمانی دارم که البته تا زیر 20الی 30 هزار رکورد قابل ملاحظه در شبکه معمولی نیست ولی بالاتر از اون یکم خودش رو نشون می دهد در روش شما هم هر بار برای sort یک کوئری اجرا مکنه و نتیجه رو به بایندینگ پاس می کنه آیا روش من اصولی بنظر می رسه یا نه
در linq to sql شما در متد کوئری خودتون یک query.copytodatatable دارید و این خیلی راحت این مشکل رو حل می کنه ولی در linq to entity وجود ندارد
خواهشا راهنمایی فرمائید

linux
دوشنبه 26 دی 1390, 18:28 عصر
با سلام
استاد خیلی دنبال حل مشکل گشتم ولی تو تمام فرومها این مشکل همینطور پا برجا بود می تونم با ساختن یک datatable و ریختن اطلاعات کوئری بصورت رکورد به رکورد داخل آن بوسیله foreach مشکل رو حل کنم ولی مقداری افت زمانی دارم که البته تا زیر 20الی 30 هزار رکورد قابل ملاحظه در شبکه معمولی نیست ولی بالاتر از اون یکم خودش رو نشون می دهد در روش شما هم هر بار برای sort یک کوئری اجرا مکنه و نتیجه رو به بایندینگ پاس می کنه آیا روش من اصولی بنظر می رسه یا نه
در linq to sql شما در متد کوئری خودتون یک query.copytodatatable دارید و این خیلی راحت این مشکل رو حل می کنه ولی در linq to entity وجود ندارد
خواهشا راهنمایی فرمائید

30 هزارتا رکورد را لود می کنی میگذاری جلوی کاربر ننه مرده که باحاش چی کار کنه؟

amir3321
دوشنبه 26 دی 1390, 19:37 عصر
30 هزارتا رکورد را لود می کنی میگذاری جلوی کاربر ننه مرده که باحاش چی کار کنه؟
30 هزار رکورد رقم کوچکی برای unit test می باشد در ضمن موقعی که با ارقام زیاد اطلاعات کار می کنی این رقم ها خیلی کوچیکه بعضی وقتها پیش میاد نیاز به لود این حجم اطلاعات جهت گزارشات و محاسبه داری ولی اولویت در لود اطلاعات جهت کاربر همیشه در paging می باشد
استاد راهنمایی نفرمودید

gwbasic
دوشنبه 26 دی 1390, 20:37 عصر
در مورد 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‌خوانده بشه.

امیدوارم جوابتون رو گرفته باشید و اجازه بدید تاپیک روند خودشو طی کنه

موفق باشید

notepad
جمعه 30 دی 1390, 16:39 عصر
با سلام خدمت استاد گرامی
از راهنمایی شما بی نهایت سپاسگزارم . اما با اینکه sqlexpress رو هم start کردم بازم به متد savechanges خطایی میده که innerException آن
An error occurred while preparing the command definition. است.
بازم به خاطر زحماتتون ممنون

gwbasic
جمعه 30 دی 1390, 19:00 عصر
با سلام خدمت استاد گرامی
از راهنمایی شما بی نهایت سپاسگزارم . اما با اینکه sqlexpress رو هم start کردم بازم به متد savechanges خطایی میده که innerException آن
An error occurred while preparing the command definition. است.
بازم به خاطر زحماتتون ممنون
این خطا فرق می کنه با خطای قبلی پروژتون رو بذارید اینجا ببینم

Abolfazl.programmer
یک شنبه 02 بهمن 1390, 12:21 عصر
سلام
من برنامه رو بر اساس آموزش ها نوشتم و خطایی هم نمیده اما وقتی اطلاعات ذخیره میکنم در مراجعه بعدی به برنامه یا اطلاعات پاک شده و یا بعد از چند بار ورود و خروج پاک میشن.بعد از ریست کامپیوتر هم همین اتفاق میفته.
علتش چیه؟

ممنون

noroozifar
یک شنبه 02 بهمن 1390, 13:02 عصر
سلام
من برنامه رو بر اساس آموزش ها نوشتم و خطایی هم نمیده اما وقتی اطلاعات ذخیره میکنم در مراجعه بعدی به برنامه یا اطلاعات پاک شده و یا بعد از چند بار ورود و خروج پاک میشن.بعد از ریست کامپیوتر هم همین اتفاق میفته.
علتش چیه؟

ممنون

منم همین مشکل را داشتم این بر میگرده به ویرایش کد که با هر بار ویرایش کد ویژوال استودیو بانک را ریفرش میکنه اگر می خواهی این مشکل حل بشه باید داخل فایل 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=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\StoreDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" 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=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Store\Stor eDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

حالا مشکل حذف رکوردهای که برای تست ایجاد کردم ندارم و در نهایت که پروژه کامل شد ان را به صورت اول بر میگردانم اگر اینکار انجام نشود کل پروژه بهم میریزه

چند پست قبل هم آقای مدیر توضیح داده اند می تونی بر گردی ببینید

notepad
چهارشنبه 05 بهمن 1390, 16:39 عصر
سلامی مجدد خدمت استاد گرامی
ببخشید اگه کمی دیر شد...

فقط این نکته رو بگم که چون متد savechanges مشکل داشت فعلا توی فورم customer هستم
:لبخندساده:

amir3321
چهارشنبه 12 بهمن 1390, 13:56 عصر
استاد ما منتظر ادامه آموزش هستیم میشه یک لطفی بکنید و درباره نحوه بکارگیری dialogresult جهت دریافت اطلاعات از فرم دوم یکم توضیح بدهید چون هنوز سورس دوتا ویدیو اخر رو نزاشتید من نتونستم این موضوع روخوب بفهم اگه خواستیم چند رکورد رو انتخاب کنیم چطور یعنی به حالت یک لیست از رکورد ها شاید من درست متوجه نشدم .
با تشکر

soroush_man_hd
پنج شنبه 13 بهمن 1390, 21:38 عصر
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 که اینکریس منت شم یک یک گذاشتم بره بالا می خوام مقدار بدم ولی به صورت اتوماتیک چی کار کنم میشه راههنماییم کنید مرسی خیلی گنگ توضیح دادم میدونم ولی ترجمه وکمکم کنید دی مخم جواب کرده بازم مرسی

gwbasic
پنج شنبه 13 بهمن 1390, 23:06 عصر
ببخشید دوستان که هنوز نتوستم آموزش بعدی رو آماده کنم. فعلا انرژی لازم رو برای ادامه کار ندارم تا مدتی شاید نتونم مطلب آموزشی جدیدی بذارم!!!

@notepad : کد شما بدرستی اجرا میشه! مشکلی نداره

@soroush_man_hd : برای مشخص کردن کلید اصلی باید از یک تایپ استفاده کنید Guid یا int . اگر Guid انتخاب کردید باید سمت database‌ جنس کلید اصلی رو uniqueidentifier انتخاب کنید
مشکل شما اینجاست که سمت database کلید اصلی رو int انتخاب کردید و در مدلتون Guid انتخاب کردید که به هم نگاشت نمی شوند.

باز هم عذر خواهی می کنم از همه دوستان

noroozifar
شنبه 06 اسفند 1390, 16:55 عصر
ببخشید ادامه این اموزشها چی شد .... ان شالله که دم عید هست یک اموزش خوب بذارید

noroozifar
دوشنبه 08 اسفند 1390, 19:06 عصر
سلام دوباره
اقای مدیر من امروز برنامه فرم product را اجرا کردم و یک مشکل هست زمانی که مقادیر را وارد میکنیم و مقدار price که در ابتدا 0 هستش را پاک میکنیم و به جای ان حروف مثلا a به جای عدد وارد میکنیم و بر روی ذخیره کلیک میکنیم عمل ذخیره بدون پیغام خطا انجام میشه در صورتیکه نوع ما از نوع int هستش پس چرا کاراکتر قبول کرد و پیغام خطا نداد البته داخل بانک چیزی ذخیره نمی شود ؟؟؟

zayens
جمعه 11 فروردین 1391, 16:01 عصر
فیلم هایی که برای آموزش گذاشتین توی:

http://barnamenevis.org/showthread.php?313523-%DA%A9%D8%A7%D8%B1%DA%AF%D8%A7%D9%87-%D8%B9%D9%85%D9%84%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%AB%D8%A8%D8%AA-%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%D8%A7%D8%AA-%D9%85%D8%B1%D8%AD%D9%84%D9%87-%D8%A8%D9%87-%D9%85%D8%B1%D8%AD%D9%84%D9%87

همه فیلترن!
جای دیگه میشه آپلود کنین؟

noroozifar
سه شنبه 15 فروردین 1391, 13:25 عصر
ببخشید اموزش قسمت سه لایه را نمیدید با استفاده از این روش

gwbasic
سه شنبه 15 فروردین 1391, 14:15 عصر
فکر نمی کنم دیگه بتونم این تاپیک رو ادامه بدم چون کاملا یک طرفه پیش می ره و کسی مشارکت نمی کنه و من هم فرصت و زمان کافی متاسفانه ندارم

noroozifar
سه شنبه 15 فروردین 1391, 14:20 عصر
خوب ما که تا اینجا جلو امدیم باید چه کار کنیم ؟؟؟؟ کجا را مطالعه کنیم برای یادگیریش ؟ پست شماره 127 را یک نگاه بندازید پاسخ اون سئوالم هنوز مانده

حمیدرضا1
شنبه 13 خرداد 1391, 09:44 صبح
سلام.
من یه اشکال تو پروژ] دیدم.گفتم بگم شاید رفع شه.
اگه تو فرم Customerچند تا مشتری وارد کنی و بعد اونا رو حذف کنی و هیچی تو دیتاگرید ویو نباشه طبق قانونی که خودتون گفتید باید فقط کلید جدید فعال باشه که اینطور نیست.همین

shocraneh
دوشنبه 12 تیر 1391, 21:27 عصر
با سلام من یک هفته ای میشه که کار رو EF رو شروع کردم. شکر خدا با کمک دوستان تونستم کدهایی رو که همیشه تو پروژه هام داشتم رو پیاده سازی کنم .فقط دو تا سوال باقی موند که دوستان منو به این تاپیک ارجاع دادن.که با بررسی تاپیک های مربوطه سوالات زیادی به ذهنم اومد و البته چند تا اررور تو پروژه؟احیانا دوستان پروژه کامل این بحث رو ندارن؟ممنون از دوستانی که این تاپیک ها رو راه میندازن

اجازه بدین چندتا از سوالتمو همین جا بپرسم؟
1-من از navigator استفاده نمی کنم و خودم با دکمه این روش رو پیاده سازی میکنم.که البته تو EF به مشکل خوردم.توتاپیک هامدیر navigator رو بهتردونستن .ایا برای پروژه های تجاری navigator از نظر ظاهر تو دید کاربر مشکل نداره؟
2-تو روش کلاسیک چند لایه کار میکردم .بعد از کار با با EF احساس کردم به دلیل جلوگیری از کندشدن سرعتو اینکه کدها خواناتراز روش کلاسیک هستند ، دیگه نباید از این روش استفاده کرد.الان برام سواله واقعا چندلایه بودن اینجا مفیده؟

shocraneh
دوشنبه 12 تیر 1391, 22:02 عصر
سلامی مجدد خدمت استاد گرامی
ببخشید اگه کمی دیر شد...

فقط این نکته رو بگم که چون متد savechanges مشکل داشت فعلا توی فورم customer هستم
:لبخندساده:
من اینارو دانلود کردم .همون فایلهایی بود که مدیر تو آموزش های ابتدایی رو سایت گذاشته بودن درسته؟؟(دوبرنامه تو شروع کار)پس چرا تو چند لینکه؟ من تغییری توش ندیدم؟؟

shocraneh
پنج شنبه 15 تیر 1391, 23:07 عصر
باسلام من این برنامه رو از روآموزش هاش دنبال کردم.من 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 ; }
}
برای رفرش دیتاگرید چی کارکنم.برای باردوم خطا میده

shocraneh
پنج شنبه 12 مرداد 1391, 09:24 صبح
باسلام . من این پروژه رو از روی آموزش ها ساختم و روی یه تاپیک آپلود کردم و سوالاتم رو پرسیده بودم ولی نمی دونم را مدیران حذفش کردند؟!!!! بهتره همین جا بزارمش
فرم ثبت سفارش مشکل داره :آموزش فایل آخر.برام مهم نیست دوستان دیتاست ها رو روی فرم یا تو کد معرفی کنند . خلاصه مهم اینه که گرید اطلاعات رو نشون بده و سفارش ثبت بشه(حتی تو حالتی که در فایل های آموزشی بود bsOrder تو کد معرفی شده بود حالا چه تو گرید رو تو محیط دیزاین به dsOrder Detail که البته Datasource اون bsorder بودband کرده بودند؟) تا یادم نرفته برای انتخاب مشتری یه دکمه رو فرم کاستومر گذاشتم فعلا دوستان از همون دکمه استفاده کنند

shocraneh
پنج شنبه 12 مرداد 1391, 11:55 صبح
با سلام من خیلی سرچ کردم دوستان لطف کنند مارو هم راه بندازند . مشکل اصلی من نمایش اطلاعات توی گرید است.چه طوری وقتی منبع داده اصلی ما که dsorder است تو محیط کد معرفی شده ، روی محیط دیزاین کالمن های گرید رو تونستند به به اون بایند کنند

shocraneh
پنج شنبه 12 مرداد 1391, 12:56 عصر
باتشکر که سورس رو قراردادید انشاا.. دوستان در نظرسنجی شرکت کنند. فقط یه مشکل هست
اولین رکورد رو درست ثبت میکنه ولی دومین سفارش رو پیغام An error occurred while updating the entries. See the inner exception for details میده.مشکل چیه؟

gwbasic
پنج شنبه 12 مرداد 1391, 13:33 عصر
باتشکر که سورس رو قراردادید انشاا.. دوستان در نظرسنجی شرکت کنند. فقط یه مشکل هست
اولین رکورد رو درست ثبت میکنه ولی دومین سفارش رو پیغام An error occurred while updating the entries. See the inner exception for details میده.مشکل چیه؟

ببینید هر وقت با چنین خطایی مواجه شدین به Inner Exception‌ نگاه کنید اونجا احتمالا پیغام دقیقتری می بینید.
مراحلی رو که انجام می دید تا به خطا می خورید رو با جزئیات کامل بنویسید تا من تست کنم

samadblaj
پنج شنبه 12 مرداد 1391, 23:26 عصر
ممنونم آقای gwbasic لطفا اگه امکانش هست به آموزش ها ادامه بدید تا بلا تکلیف نمونه من که خیلی حال کردم با این آموزش ها خیلی روان و مفید هستش.

shocraneh
جمعه 13 مرداد 1391, 14:38 عصر
باسلام وتشکر راستش نتونستم خطایابی کنم.
برای باراول که جدول orderdetail خالیه عمل ثبت سفارش رو انجام میده .اما برای ثبت رکورد بعدی(حتی با run مجددپروژه)در قسمت context.SaveChanges خطا میده .خط به خط که میرم هر سه bs مقدار گرفته اند. (البته عمل ویرایش به درستی انجام میشه. )
یه سوال دیگه که برام مطرحه در تابع AddProductToCurrentOrderDetails وقتی میگیم محصول قبلا تو کانتکس نباشه ،مگه معنیش این نیست که برای مشتری جاری این محصول رو انتخاب نکرده باشیم ؟! تو اجراهای من تحت هر شرایطی product = obj as Product اجرا میشه .توجه اگه بکنید متوجه میشید اگه بخایم به لیست سفارش ثبت شده قبلی هم یک قلم دیگه اضافه کنیم ، بعد از انتخاب محصول تو دو تارکورد از گرید محصول رو میزنه و بعد از ثبت سفارش دوباره همون پیغام خطا میاد

shocraneh
شنبه 14 مرداد 1391, 04:23 صبح
باسلام شرمنده من مدل رو جنریت کرده بودم ولی حواسم به باگ مربوط به تنظیم 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 روهنوز متوجه نشدم(تاپیک قبلی)

gwbasic
شنبه 14 مرداد 1391, 11:25 صبح
ببینید یکی از خصوصیات برنامه نویس پیگیر بودن و سمج بودن ولی هیچ وقت نباید مطالعه اصولی فراموش بشه و همیشه الویت ها باید رعایت بشه منظورم اینه که اگه شما یکسری مفاهیم پایه ای رو ندونید در حل مشکلات زمان زیادی رو باید صرف کنید که براتون حتما آزار دهنده خواهد بود.
1- ربطی به identity نداره اگه به متن خطا دقت کنید متوجه می شید موضوع چیه؟ شما احتمالا Count یا Price رو nullable در دیتابیس تعریف کردین که در این صورت هنگام تولید مدل پراپرتی ای از جنس nullable تعریف می شه و باقیه ماجرا

2- کافیه معنی Include رو در EF بررسی کنید و همچنین Lazy Loading

3- با کدی که من بهتون دادم اجرا کنید بعید می دونم اضافه کردن یک قلم به سفارشی که قبلا ذخیره شده اشکالی ایجاد کنه چون وقتی سفارشی Load میشه اقلام سفارش در Context قرار می گیرند. بنابراین نباید مشکلی باشه. اگه این مورد مشکلی داشت با جزئیات بگید تا بررسی کنم

shocraneh
شنبه 14 مرداد 1391, 13:38 عصر
باتشکراز توجهتون .آره خطایابی مسئله مهمیه .من در حدی میدونم که برام پیش اومده وتجربه کردم..آیا منبعی هست که بتونه در این زمینه کمک کنه؟ممنون 1-تودیتابیس تنظیم بودولی تو مدلNullable=nounبود.حالا با Nullable=false یه قسمت دیگه کدهمین خطا رو میده درتابع AddProductToCurrentOrderDetails قسمت od.Price = product.Price.اصلا چرا با وجود اینکه فیلد قیمت مقدار داره باید به نال بودن یا نبودن حساس باشه؟ 2-من این قسمت رو با مقادیر متفاوت اجرا کرده بودم ونتیجه رو هم دیدم.حتی بدون این تکه کد. ولی درک این قضیه که چرا "Customer"جواب درست میده؟ آخه ما لیست سفارش میخایم ،مشتری چرا! 3-به گمونم سوالم رو درست مطرح نکردم .ثبت به درستی انجام میشه منظورم این بود که کدelse context.Product.Attach(product اینجا ضرورتی نداره .(به عبارت بهتر دراینجا هیچ وقت این خط اجرا نمیشه.درسته؟)

gwbasic
شنبه 14 مرداد 1391, 20:09 عصر
در فرم Orders‌ لیست سفارشات نمایش داده می شه و هر سفارشی برای یک مشتری هست بنابراین نیاز هست که اطلاعات مشتری برای هر سفارش هم بارگذاری شود تا بتوان آن را نمایش داد ستون مشتری بر اساس مشخصات Customer‌ پر می شه بنابراین نیاز هست که Load‌ بشه

اما در مورد Attach کالا:
اگر Attach انجام نشه Product‌ انتخاب شده در فرم Product‌ به عنوان موجودیت جدید در نظر گرفته می شه و هنگام ذخیره یک رکورد جدید از Product با مشخصات قبلی و Id‌جدیدی ایجاد می شه پس بنابراین باید Attach‌کرد تا object service‌ بتونه تشخیص بده که این موجودیت جدید نیست ولی اینکه قسمت else‌اجرا نمی شه حق با شماست وقتی TryGetObjectByKey‌ استفاده می شه باعث میشه که ابتدا product‌در داخل context‌جستجو بشه و اگه موجود نبود اون رو از database‌ می خونه و این باعث می شه که خود بخود Attach صورت بگیره بنابراین نیازی به else‌ نیست البته این مورد دوم که باعث می شه product دوباره از DB خونده بشه زیاد جالب نیست که باید اصلاح بشه ولی کد بدرستی وظیفش رو انجام می ده

shocraneh
یک شنبه 15 مرداد 1391, 09:38 صبح
با تشکر . نمیدونم این تاپیک ها تا کجا ادامه پیدا میکنه و قراره موضوع بعدی چی باشه؟ راستش لیست فازهای پروژه رو که نگاه میکردم ،دیدم فاز 2 گزارش است گزارش باlinq تو همین سایت بحث شده (شکرخدا کدش هم جواب میده).
من تو روش کلاسیک چندلایه کارمیکنم آیا اساتید اجازه میدن من یک فرم با استفاده از چندلایه ای بزارم تا راجع به ایرادات احتمالیش بحث بشه؟ اگه نظرمثبته بگید موضوع فرم جدید چی باشه .پیشاپیش ممنونم

gwbasic
یک شنبه 15 مرداد 1391, 11:09 صبح
از لفظ استاد خواهشا استفاده نکنید من هم مثل شما هستم. در مورد ادامه من انگیزه ای دیگه ندارم اما اگه فعالیتی صورت بگیره موافقم و سعی می کنم همراهی کنم.
پیشنهاد خوبی دادین در مورد چند لایه اگه کدتونو بذارید می تونیم روش بحث کنیم (امیدوارم بقیه دوستان هم همراهی کنند).

shocraneh
دوشنبه 23 مرداد 1391, 01:06 صبح
باسلام و آرزوی قبولی طاعات وعبادات
قراربود پروژه رو چندلایه بزارم ،اما متاسفانه تو یه سری کدهای اولیه به مشکل خوردم .صلاح رو براین دیدم ابتدا پروژه رو به سبک معمول بزارم تاباکمک دوستان ایراداتش گرفته بشه .بعد همین رو چندلایه کنم.برنامه ابتدا نام مدرس رو ثبت میکنه وبعد برنامه کلاسی مدرس رو مشخص میکنه(دکمه لیست کلاسها)

gwbasic
دوشنبه 23 مرداد 1391, 13:06 عصر
یکی از مواردی که منو واقعا دلسرد کرد از ادامه کار عدم دقت و توجه دوستان بود. تصور می کنم اصلا ویدیویی ندیدن فقط یکسری کد دیدن که دلیلشو نمی دونن برای چی نوشته شده !!!

دوستان این یک پروژه بود که شما طریقه کدنویسی رو در عمل ببینید. و مخاطبینشم برنامه نویس های با تجربه هست نه کسی که به لحاظ فنی در سطح پایینی قرار داره. برنامه نویس با تجربه برنامه نویسی هست که به تکنولوژی های مختلف آشنا هست مثل ADO.NET , Entity framework , Nhibernate و سوکت پروگرامینگ و چه می دونم هر چیزی که شما فکرش رو بکنی. اما یک برنامه نویس با تجربه لزوما یک برنامه نویس حرفه ای و قدرتمند نیست.یک برنامه نویس حرفه ای لزوما چه می دونم WPF نمی دونه و یا هزارو یک چیزه دیگه در عوض برنامه نویس حرفه ای اصول برنامه نویسی رو می دونه. اون می دونه که اصول کد نویسی چی هست. اون به ساده ترین شکل ممکن کد می نویسه. کدی که می نویسه برای هر کسی قابل فهم هست و اصول SOLID رو کاملا آگاه هست Design pattern ها رو به خوبی می دونه و می دونه که چه زمانی باید ازشون استفاده کنه

من نه EF آموزش دادم نه DataBinding و BindingSource ولی در عمل نشونتون دادم که چطور استفاده کنید. در عوض توقع دارم که این مفاهیم رو بدقت بررسی کنید. تعجب می کنم که با وجود BindingSource دوباره از BindingContext استفاده کردین. این نشون می ده که اصلا متوجه کاربردش نشدید. بقدری کدتون ایراد داره که نمی دونم چی باید بگم فقط توصیه می کنم چندبار دیگه ویدیو رو ببینید و با هر مفهومی مشکل داشتین بررسیش کنید.

gwbasic
دوشنبه 23 مرداد 1391, 14:54 عصر
البته من فایل های ویدویی رو دنبال کردم .دلیل استفاده نکردنم از BindingSource اینه که شکل ظاهری جالبی به فرم نمیده .
BindingSource یک کامپوننت هست که عمل Binding رو تسهیل می کنه. و ربطی به UI نداره. متوجه منظورتون نشدم.
اگه منظورتون BindingNavigator هست در مورد اونم توضیح دادم شما ظاهرش رو به هر شکلی که دوست دارید می تونید تغییر بدید

shocraneh
سه شنبه 24 مرداد 1391, 09:43 صبح
باسلام وتشکر
من برنامه روعوض کردم .البته یک سری ایرادات هنوز داره.لطفا دوستان نظر بدن
ابتدا نام مدرس رو ثبت میکنه وبعد برنامه کلاسی مدرس رو مشخص میکنه(دکمه لیست کلاسها)
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چه روشی رو پیشنهاد میدید؟

shocraneh
یک شنبه 05 شهریور 1391, 12:38 عصر
من پست قبلی رو ویرایش کردم و منتظر نظر دوستان هستم.باتشکر

arman1371
یک شنبه 05 شهریور 1391, 19:40 عصر
سلام
من با آموزش های در اینجا شروع کردم به ساخت نرم افزاری واسه مشاور املاک
متاسفانه مشکلی که دارم اینه که تو همه ی فرم هام وقتی مقداری رو واسه ویرایش میزنم و مقدار داخل فیلد رو عوش میکنم و بعدش انصراف رو میزنم تابع CancelEdit بایندینگ سورس به درستی عمل نمیکنه و متغیر در دیتاگریدویو تغییر میکنه اما تو دیتابیس مشکلی نیست و برنامه به خوبی اجرا میشه
پروژمم میذارم که هم بقیه بتونن استفاده کنن هم اگه کسی فهمید مشکلم چیه بهم بگه.

shocraneh
دوشنبه 06 شهریور 1391, 11:08 صبح
انصراف رو میزنم تابع CancelEdit بایندینگ سورس به درستی عمل نمیکنه و متغیر در دیتاگریدویو تغییر میکنه .
سلام من هم این مشکل رو دارم .روی پروژه Store تو فرم ProductrFormاین اتفاق نمیفته ! اگه دقت کنید به محض اینکه از روی تکس خارج میشیم مقدار گرید هم عوض میشه (اینجا اتفاقی که نباید میفته).
راستی می تونم بپرسم فرم املاک تون رو چه طوری اجرا میکنید؟؟
لطفا دوستان روی پروژه تاپیک 150 هم نظر بدند.ممنون

arman1371
دوشنبه 06 شهریور 1391, 12:57 عصر
سلام
تو پروژه مشاور املاک تو فرم منطقه برای رویداد کلیک دکمه btnAdd کدش یه مشکلی داشت که الان فهمیدم این کد صحیحش هستش

private void btnAdd_Click(object sender, EventArgs e)
{
BsMantaghe.AddNew();
Mantaghe tempMantaghe = (Mantaghe)BsMantaghe.Current;
tempMantaghe.Shahr = cmbShahr.SelectedItem as Shahr;
AddOrEditMode = true;
}




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

shocraneh
سه شنبه 07 شهریور 1391, 06:39 صبح
سلام . به نظرمن این فرم ایراد داره .چرا از بیندینگ استفاده نکردید . ارسال بیندینگ سورس به این فرم ها چه ضرورتی داره؟
لطفا دوستان روی خطای تاپیک 150 هم بحث کنند .خیلی برام مهمه .

shocraneh
سه شنبه 07 شهریور 1391, 19:50 عصر
دوستانی که با EF کارمیکنن بیزحمت یه نگاهی به برنامه من بندازند . خیلی عجله دارم .ممنون

shocraneh
چهارشنبه 08 شهریور 1391, 11:13 صبح
سلام اگه میخای هم یوزر هم پسورد رو چک کنید باید از عملگر && استفاده کنید !(شرط منطقی تون اشتباهه)

samadblaj
چهارشنبه 08 شهریور 1391, 11:20 صبح
ببخش اون قسمتشو حواسم نبود از || یا استفاده کردم.
مشکلم سر اجرا شرط بعدش هست میخوام اگه صحیح بود متن دکمه بشه ok ؟ اگر هم نبود که هیچ؟

shocraneh
چهارشنبه 08 شهریور 1391, 11:28 صبح
خوب شما باید null بودن یا نبودن pro رو چک کنید.موفق باشید
لطفا دوستان تکه کد تو این تاپیک نذارن

arman1371
پنج شنبه 09 شهریور 1391, 12:20 عصر
از دوستان کسی نمیدونه چرا تو بعضی کدها تابع CancelEdit بایندینگ سورس کار نمیکنه؟

vahidth
یک شنبه 14 آبان 1391, 21:24 عصر
سلام
میشه آموزش جستجو کردن و چاپ نتایج جستجو رو هم بزارید با یه فیلم آموزشی ممنون میشم

ali006
یک شنبه 19 آذر 1391, 21:43 عصر
سلام
راستش رو بخواید من زیاد #Cبلد نیستم و تازه کارم.میخواستم بانک اطلاعاتیش رو خوب یاد بگیرم.ظاهرا خیلی گستردس.من قبلا دلفی خیلی کار کردم. تو دلفی یه بانک اطلاعاتی BDE داشت که یه فیلتر درست میکردی و تمام جستجو ها و فیلتر ها رو اعمال می کردی و جستجو رو میزدی تمام فیلتر ها رو اعم از تاریخ و غیره اعمال می کرد و توی یه dbgrid نشون می داد.
حالا من یه همچین چیزی می خوام
من یه پروژه ساده می خوام که یه دیتابیس داره (SQL)که 2 آیتم تاریخ و نام رو داره.(نام دانشجو و تاریخ ثبت نام)
حالا می خوام با یه فرم اطلاعات وارد کنم و با فرم دیگه جستجو و ویرایش و حذف کنم.
یه نکته خیلی مهم اینه که میخوام از قابلیت فیلتر استفاده کنم و فیلتر هم می خوام برای تاریخ و هم برای نام کار کنه.
مثلا از تاریخ فلان تا تاریخ فلان چه دانشجوهایی ثبت نام کردن یا در تاریخ فلان چه دانشجو هایی با نام علی ثبت نام کردن .بازم میگم با فیلتر کردن datagridview میخوام این کار جستجو رو انجام بدم.
اگه میشه ممنون میشم کمکم کنید

rahahost
دوشنبه 27 آذر 1391, 20:57 عصر
با سلام به همه اساتید محترم .

بعنوان یک تازه کار که استارتشو با روش جالبی که در وب سایت شروع شده ، شروع کردم .

فیلم آموزشی رو دیدم و تقریبا متوجه شدم توضیحات شدم اما مشکلی در برنامه وجود داره که نمیدونم کجایه کارو اشتباه انجام دادم .
موقعی که یک مشتری اضافه میکنم و دکمه Save رو میزنم ، عملیات ذخیره سازی انجام میشه اما اگر دو و یا بیشتر ، مشتری ایجاد کنم ، موقعی که دکمه Save رو میزنم ، با خطا روبرو میشم :
System.Data.UpdateException was unhandled
Message=An error occurred while updating the entries. See the inner exception for details.
Source=System.Data.Entity
StackTrace:
at System.Data.Mapping.Update.Internal.UpdateTranslat or.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
at System.Data.EntityClient.EntityAdapter.Update(IEnt ityStateManager entityCache)
at System.Data.Objects.ObjectContext.SaveChanges(Save Options options)
at System.Data.Objects.ObjectContext.SaveChanges()
at Anbar_dari.Forms.CustomerForm.SaveChanges() in E:\Proje\C#\Anbar dari\Anbar dari\Forms\CustomerForm.cs:line 27
at Anbar_dari.Forms.CustomerForm.tsbSaveAll_Click(Obj ect sender, EventArgs e) in E:\Proje\C#\Anbar dari\Anbar dari\Forms\CustomerForm.cs:line 22
at System.Windows.Forms.ToolStripItem.RaiseEvent(Obje ct key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(Event Args e)
at System.Windows.Forms.ToolStripItem.HandleClick(Eve ntArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(M ouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventIntera ctive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(Event Args e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEven tArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Anbar_dari.Program.Main() in E:\Proje\C#\Anbar dari\Anbar dari\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context( Object state)
at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.Data.SqlClient.SqlException
Message=Violation of PRIMARY KEY constraint 'PK_Customer'. Cannot insert duplicate key in object 'dbo.Customer'.
The statement has been terminated.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=14
LineNumber=1
Number=2627
Procedure=""
Server=\\.\pipe\4FAC4DBF-F7BD-40\tsql\query
State=1
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlExc eption exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnErro r(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndW arning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteRead er(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderT ds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader( CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNo nQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at System.Data.Mapping.Update.Internal.DynamicUpdateC ommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Mapping.Update.Internal.UpdateTranslat or.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
InnerException:

نمیدونم ایراد کارم کجاست !
لطفا راهنماییم کنید .
ممنونم .

gwbasic
چهارشنبه 29 آذر 1391, 07:01 صبح
طبق آموزش عمل نکردید خطا بطور واضح در این خط کد بیان شده :
Message=Violation of PRIMARY KEY constraint 'PK_Customer'. Cannot insert duplicate key in object 'dbo.Customer'
map ای که برای Id مشخص کردید و نوعی که برای Id مربوطه در Table رو بررسی کنید و طبق آموزش انجام دهید تا بطور اتوماتیک id توسط sql ساخته شود و Guid تکراری ایجاد نشود

rbrostam
چهارشنبه 29 آذر 1391, 18:05 عصر
سلام موقع اجرای سورسی که دانلود کردم این ارور رو میده فوری کمک کنید لطفا
http://4ax.ir/images/dTnDp.png

hassan_kahrizy
دوشنبه 21 اسفند 1391, 11:25 صبح
سلام
هر کاری می کنم اطلاعات در دیتا بیس ذخیره نمی شه هیچ خطایی هم نمی ده
() context.SaveChange
تو sql profiler هم می بینم وقتی savechange() اجرا می شه هیچ دستوری در دیتا بیس اجرا نمی شه
مشکل از کجاست؟
بنده از ویژوال استودیو 2012 استفاده می کنم
بدون دیتا بایندینگ کار می کنم با entity framework درست کار می کنم ولی نمی دونم مشکلش با دیتا بایندینگ چیه

gwbasic
دوشنبه 21 اسفند 1391, 18:35 عصر
طبق آموزش عمل نکردید یک بار دیگه بررسی کنید کجای کارتون ایراد داره. قطعا Binding تون ایراد داره به درستی ارتباط رو برقرار نکردید

kordestan
دوشنبه 28 اسفند 1391, 22:58 عصر
سلام بی زحمت لینک ویدئو هارو درست کنید ...هر چی میزنم رو لینک صحفه ی error ور میاره

madiseh
جمعه 09 فروردین 1392, 19:59 عصر
لینک ویدیو ها مشکل دارد

لطفا مدیران سایت بررسی کنند.....

hamide741
سه شنبه 03 اردیبهشت 1392, 10:25 صبح
سلام ا دوتا آموزش اول دانلود نميشن اگه لينكشو درس كنيد ممنون ميشم

gwbasic
شنبه 07 اردیبهشت 1392, 22:28 عصر
فایلهای آموزشی رو در جای دیگری UpLoad کردم و لینک های جدید قرار داده شدند

مهدی هادیان2
دوشنبه 09 اردیبهشت 1392, 11:08 صبح
بسم الله الرحمن الرحیم
با سلام
خواستم قسمت اول آموزش رو که مربوط به مشتری ست دانلود کنم ولی دانلود نشد؛ فقط پروژه دانلود شد. ویدئوها به صورت کامل دانلود نشد. تنها چند کیلو رو دانلود میکنه.
با سپاس

مهدی هادیان2
سه شنبه 10 اردیبهشت 1392, 07:27 صبح
بسم الله الرحمن الرحیم
با سلام
دوستان لطفا بفرمائید که شما می تونید دانلود رو به طور کامل انجام بدید یا نه؟ که ببینم مسئله از لینک هاست یا چیز دیگه ای است؟
با سپاس

مهدی هادیان2
جمعه 13 اردیبهشت 1392, 06:16 صبح
بسم الله الرحمن الرحیم
با سلام
دوستان لطفا لینک های آموزشی رو دانلود کنید؛ ببینیم لینک مشکل داره یا نه؟
با تشکر

wolf_majid
جمعه 13 اردیبهشت 1392, 09:01 صبح
من آموزش اول و دوم رو دانلود کردم مشکلی نبود

مهدی هادیان2
شنبه 14 اردیبهشت 1392, 06:22 صبح
به نام خدا
از آقای wolf_majid تشکر میکنم که زحمت دانلود رو کشیدند.
امروز صبح دوباره امتحان کردم خداروشکر دانلود انجام شد.

yas3131
یک شنبه 02 تیر 1392, 10:07 صبح
با سلام چطور میشه یک فایل رو آپلود کرد؟ ممنون

hojjjat
شنبه 22 تیر 1392, 18:02 عصر
با سلام
من چندتا مشکل دارم
اول اینکه وقتی جدولی میسازم سیو میشه ولی دوباره ازت میخواد سیوش کنی!!!!یعنی ستاره بالای صفحه نمیره
دوم اینکه من تو قسمت add>data اون چیزای که شما میگین ندارم
107146

momimomi
پنج شنبه 14 شهریور 1392, 12:12 عصر
فایلهای آموزشی رو در جای دیگری UpLoad کردم و لینک های جدید قرار داده شدند

سلام دوست من
آیا هنوزم آموزشاتون ادامه داره؟

حمیدرضا1
سه شنبه 21 آبان 1392, 16:04 عصر
سلام.منم می خوام بدونم آموزش ادامه داره یا نه؟

gwbasic
سه شنبه 21 آبان 1392, 22:09 عصر
سلام
نه متاسفانه این آموزش 2 سال پیش انجام شده و ادامه نداره. امیدارم فرصت و انگیزه کافی پیدا کنم در آینده آموزشی با تکنولوژی های جدید داشته باشم

ehsan.sunrise
شنبه 27 اردیبهشت 1393, 16:18 عصر
سلام میخواستم بگم اگه میشه کل این پروژه رو تو یه پک بزارین واسه دانلود که بتونیم همه رو یه جا داشته باشیم که در صورت نداشتن نت بتونیم استفاده کنیم ممنون.

Mohsen_Cisco1981
چهارشنبه 08 بهمن 1393, 11:04 صبح
با سلام
من یه سوال داشتم ، آیا در اینتیدی فریم ورک میشود بدون این که بانک رو به سولوشن اضافه کنیم( یعنی مستقیم از خود sql server ) کار کنیم؟:متفکر:

lovee20002002
دوشنبه 11 خرداد 1394, 20:52 عصر
سلام دوستان من با آموزش مشکلی نداشتم و رو اکسپرس مار میکردم ولی الان اومد رو Sql server 2012 و برنامه ای که میخوام بنویسم شبکه میشه مشکلی از جهت تعریف تیبیل و ساخت بایندینگ سورسم نبود فقط الان موندم چرا Savechanges عمل نمیکنه و سیو نمیشه حتی 2 تا تیبل بیشتر ندارم واسه تست یه Id و نیم و فمیلی زدم فقط تو رویداد load _ page هم تو ویژوال 2013 حتمان باید بایند سورس رو tolist بزارم و گرنه اررور میده و میپره بیرون
ممنون میشم راهنمایی کنید
using
System;

using
System.Collections.Generic;

using
System.ComponentModel;

using
System.Data;

using
System.Drawing;

using
System.Linq;

using
System.Text;

using
System.Windows.Forms;

using
System.Data.Sql;

using
System.Data.SqlClient;

using
System.Data.SqlTypes;


namespace
anbar1.Forms

{


publicpartialclasstest : Form

{


privateanbarEnt context;


public test()

{

InitializeComponent();

}






privatevoid test_Load(object sender, EventArgs e)

{

context =
newanbarEnt();

bindingSource1.DataSource = context.tests;


}



privatevoid toolStripButton1_Click(object sender, EventArgs e)

{

savechange();



}



privatevoid savechange()

{

context.SaveChanges();


MessageBox.Show("oksave!");


}

}