توسط کامیار
ﺳﻪشنبه 26 مهر 1390 21:34
در مقاله قبلی در مورد نحوه های فراخوانی relation ها در Entity Framework نسخه 4.1 صحبت کردم.
در این مقاله، دو متد را برای راحتتر شدن فراخوانی relation ها به روش Explicit Loading معرفی خواهم کرد.
مشاهده کردید که برای استفاده از روش Explicit Loading، باید به صورت زیر عمل می شد: بیشتر...
توسط کامیار
چهارشنبه 06 مهر 1390 14:53
قصد داشتم مقاله نسبتا جامعی در مورد استفاده از روش Code-First در Entity Framework منتشر کنم که متاسفانه فعلا کمبود وقت مانع تکمیلش شده.
در این مقاله در مورد نحوه Load کردن اشیاء مرتبط با یک شیء (Related Entity Objects) در Entity Framework صحبت شده.
مثال ساده زیر را در نظر بگیرید: بیشتر...
توسط کامیار
جمعه 28 مرداد 1390 20:05
مدتی پیش، در شرکت برنامه ای را توسعه می دادیم که قرار بود به کاربر نهایی این اجازه را دهد که مستقیما کدی را داخل برنامه نوشته و اجرا کند.
این قطعه کد قبلا توسط شخصی نوشته شده بود و ما فقط از آن استفاده کردیم و متاسفانه دسترسی ای به سورس نداشتم. اما لذت فهم این مساله، باعث شد پروژه مشابهی بنویسم.

پروژه پیوست این مقاله، حاوی یک کتابخانه dll برای compile کردن کد #C و پروژه Winforms نمونه ای برای نمایش نحوه استفاده از این کتابخانه هست.
اضافه می کنم برای Visual Basic، می توانید از Microsoft.VisualBasic Namespace و برای JScript، از Microsoft.JScript Namespace استفاده کنید. اما توضیحات کار: بیشتر...
توسط کامیار
دوشنبه 27 تير 1390 14:48
با استفاده از الگوی طراحی Repository، شما می توانید لایه ای بین DAL (مخفف Data Access Layer) و BLL (مخفف Business Logic Layer) ایجاد کنید. این مساله می تواند به شما کمک کند تا هنگام تغییر دیتابیس، کمترین تغییرات را در کد خود داشته باشد.
در الگوی طراحی Generic Repository، شما به جای تعریف یک Repository برای هر Entity، اقدام به تعریف یک Repository عمومی برای تمام Enitity هایتان می کنید.
ساختار نهایی Reference های پروژه های این مقاله به شکل زیر است (A->B یعنی پروژه A به پروژه B یک Reference دارد.)
BusinessObjects => X
DAL (Data Access Layer) => BusinessObjects
BLL (Business Logic Layer) => DAL, BusinessObjects
WebApplication (UI) => BLL, BusinessObjects
پروژه ای که من در اینجا پیاده سازی خواهم کرد، نمونه ساده شده پروژه ای است که آقای Huyrua، در این آدرس معرفی کردند. بیشتر...
توسط کامیار
جمعه 27 خرداد 1390 08:06
پروسه Debug کردن یک نرم افزار، بیشتر به یک Flow یا جریان شبیه هست. به این معنی که شما پله به پله، بر اساس مسیر اجرا، در کد به جلو می روید. یکی از مواردی که همیشه در Wish list من بود، نوعی روش debug بود که به شکل بهتری، روند اجرای کد را تعقیب کند و یک تصویر دیاگرامی از کد در حال اجرا در زمان debug را در اختیار برنامه نویس قرار دهد.
خوشبختانه بخش توسعه مایکروسافت با همکاری Brown University، ابزاری به نام Debugger Canvas را برای کاربران Visual Sudio 2010 Ultimate مهیا کرده اند که دقیقا همین کار را انجام می دهد. بیشتر...
توسط کامیار
جمعه 20 خرداد 1390 16:23
اول باید اشاره کنم که علیرغم رجحان خودم، تصمیم گرفتم مطالب بلاگ را با ادبیات رسمی بنویسم تا مترجم ها قادر به ترجمه مقالات باشند.
مواقع بسیار زیادی پیش آمده که نیاز پیدا کردم مقدار Attribute یک شیء (مخصوصا enum) را دریافت کنم. تقریبا همیشه با هدف نمایش به کاربر.
مثلا پروژه ای بود که در آن باید به کاربر امکان فیلتر کردن اطلاعات را می دادیم. برای این کار، کاربر باید از بین عملگرها، یکی را انتخاب می کرد. برای این کار، enum زیر را تعریف کردیم:
public enum Operands
{
[Description("شامل ")]
Like,
[Description("مساوی باشد با ")]
Equal,
[Description("مخالف باشد با ")]
Not,
[Description("بزرگتر باشد از ")]
GreaterThan,
[Description("کوچکتر باشد از ")]
LessThan
}
در مرحله بعد، باید این توضیحات را به کاربر نشان دهیم و هنگام انتخاب، از روی مورد انتخاب شده، متوجه می شویم که مورد انتخاب شده مربوط به کدام enum هست. در تصاویر زیر، هدف نهایی ما از این مقاله نشان داده شده. کنترل DropDownList، مقادیر Description مربوط به enum را نشان می دهد (تصویر 1) و بعد از انتخاب کاربر، مقدار Description و مقدار enum value مربوطه را مشاهده می کنیم. این پروژه را در انتهای این صفحه دانلود کنید.بیشتر...
توسط کامیار
جمعه 13 خرداد 1390 20:20
با معرفی Entity Framework 4.1، مایکروسافت قدم مهمی در نزدیک شدن به خواسته های برنامه نویسان برداشت. یکی از مهمترین دغدغه های برنامه نویسان در استفاده از Entity Framework، مساله ایجاد کلاسهای POCO خالص بود. یعنی کلاسهایی کاملا ساده برای انتقال اطلاعات بین لایه های مختلف (DTO).
شاید مهمترین تفاوت بین نسخه 4.1 و 4 اضافه شدن رویکرد Code-Frist باشه. روشی که در اون، برنامه نویس بدون داشتن دیتابیس، ابتدا کلاسهای خود رو تولید می کنه و Entity Framework، زحمت ایجاد دیتابیس رو برای اون می کشه. مزیت مهم دیگه استفاده از این روش، امکان استفاده از System.ComponentModel.DataAnnotations هست که باعث میشه کار Validation فوق العاده راحت تر بشه.
البته توجه داشته باشید اگر نیاز پیدا کردید که با WCF RIA Services کار کنید، طبق گفته آقای Jeff Handley (عضو ارشد تیم توسعه WCF RIA Services)، باید تا تابستان صبر کنید.
اما معرفی EF Power Tools: بیشتر...
توسط کامیار
جمعه 30 ارديبهشت 1390 00:05
برای پروژه های تحت Visual Studio 2010 که سیستم کنترل ورژن اونها، از نوع Mercurial هست، میتونید فایل hgIgnore. رو باز کنید و متن زیر رو جایگزین متن کنونیش کنید تا فایلهای اضافه ای در سیستم کنترل ورژن شما قرار نگیرند.بیشتر...
توسط کامیار
پنجشنبه 29 ارديبهشت 1390 23:57
امروزه تقریبا هر پروژه حتی نسبتا کوچکی هم از یک سیستم کنترل ورژن بهره می بره. مدت ها بود که از سیستم SVN برای کنترل ورژن برنامه هام استفاده می کردم و خیلی از عملکردش هم راضی بودم. اما مدتی پیش که با سیستم Mercurial آشنا شدم، خیلی سریع با چند دقیقه مطالعه قانع شدم که با این سیستم خیلی راحتتر و تمیزتر می تونم روی برنامه هام کنترل داشته باشم.بیشتر...
توسط کامیار
یکشنبه 18 ارديبهشت 1390 21:47
بعد از چند هفته، بالاخره یک زمان خالی پیدا کردم که بتونم کاری در بلاگ انجام بدم.
این چند روز، فرصت خوبی بود تا هم بلاگ خودم رو روی BlogEngine نسخه 2.0 بالا بیارم و هم با اعمال تغییرات کلی، پروژه Farsi BlogEngine رو آماده کنم.
BlogEgnine.Net، یک پروژه معروف و فعال هست که به تازگی نسخه 2.0 اون منتشر شده. با استفاده از BlogEngine.Net شما نهایتا ظرف چند دقیقه، صاحب یک سیستم بلاگ نویسی کامل خواهید شد. آدرس پروژه اصلی http://BlogEngine.CodePlex.Com هست.
اما برای استفاده ما فارسی زبانان از این پروژه، دو مشکل اساسی وجود داره. اولین مساله، مشکل راست چین بودن زبان فارسی هست که نیاز به دستکاری های متعدد در تم و گاها در سورس برنامه داره. مشکل دوم، مساله پشتیبانی از تاریخ شمسی هست که به طور پیش فرض پشتیبانی نمیشه.
هدف من از ایجاد Farsi BlogEngine، تهیه پروژه ای بود که به راحتی مثل نسخه اصلی قابل نصب باشه و مسائل بالا رو برطرف کرده و امکانات دیگری که در زیر اشاره می کنم رو به پروژه اضافه کنه.بیشتر...