‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۱۹ مرداد ۱۳۹۱، ساعت ۱۷:۱۸
خیر (^). طراحی یک لایه سرویس که خروجی IQueryable دارد نشتی دار درنظر گرفته شده و توصیه نمی‌شود. اصطلاحا leaky abstraction هم به آن گفته می‌شود؛ چون طراح نتوانسته حد و مرز سیستم خودش را مشخص کند و همچنین نتوانسته سازوکار درونی آن‌را به خوبی کپسوله سازی و مخفی نماید.
‫۱۲ سال و ۲ ماه قبل، پنجشنبه ۱۹ مرداد ۱۳۹۱، ساعت ۱۶:۵۱
- در مورد آرایه بحث شده در MSDN. ضمن اینکه استفاده از متد عموما برای حالتیکه عملیات قابل توجهی در بدنه آن قرار است صورت گیرد، توصیه می‌شود . البته در اینجا چون عملیات دریافت اطلاعات از بانک اطلاعاتی می‌تواند سنگین درنظر گرفته شود، استفاده از متد ارجحیت دارد. خواص نمایانگر اطلاعاتی سبک و با دسترسی سریع هستند.
- خروجی لیست بهتر است. (^) + اگر ReSharper جدید را نصب کنید استفاده از IEnumerable را نیز توصیه نمی‌کند ؛ چون ممکن است چندین بار رفت و برگشت به بانک اطلاعاتی در این بین صورت گیرد.
- مشکلی ندارد. خود EF Code first چنین متدی را دارد. (^) بحث کلاس تک وظیفه‌ای متفاوت است با متدی که نهایتا قرار است اطلاعات یک رکورد را در بانک اطلاعاتی تغییر دهد (اگر نبود ثبتش کند؛ اگر بود فقط همان رکورد مشخص را به روز رسانی کند).
‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۱۸ مرداد ۱۳۹۱، ساعت ۱۶:۰۶
ضمن تشکر از مطلب مفید شما، علاوه بر ReSharper که می‌تونه در دراز مدت اثر ذهنی قابل ملاحظه‌ای در تطابق با اصول نامگذاری داشته باشه، نرم افزار FxCop هم یک سری از مواردی را که ReSharper تشخیص نمی‌ده می‌تونه به خوبی گزارش بده:
CA1717:OnlyFlagsEnumsShouldHavePluralNames
CA1704:IdentifiersShouldBeSpelledCorrectly
CA1709:IdentifiersShouldBeCasedCorrectly
CA1702:CompoundWordsShouldBeCasedCorrectly
...

‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۱۸ مرداد ۱۳۹۱، ساعت ۰۳:۰۶
بالاتر توضیح دادم. از NuGet استفاده کنید. (دسترسی به گوگل کد با IP ایرانی میسر نیست؛ ولی NuGet محدودیتی ندارد)
‫۱۲ سال و ۲ ماه قبل، چهارشنبه ۱۸ مرداد ۱۳۹۱، ساعت ۰۰:۲۸
خیر. مدیریت این جدول واسط کاملا خودکار است.
‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۱۷ مرداد ۱۳۹۱، ساعت ۱۴:۲۶
در قسمت جاری زمانی که با attributes کار می‌کنید، محدود هستید به امکانات زبان مورد استفاده. در تعریف و مقدار دهی ویژگی‌ها امکان استفاده از lambda expressions وجود ندارد و مقادیر تعریف شده در آن باید در زمان کامپایل ثابت باشند.
+
قسمت‌های بعدی رو که مطالعه کنید به روش دوم تعریف‌های نگاشت‌ها به نام Fluent API خواهید رسید. در آنجا همه چیز strongly typed است.

‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۱۷ مرداد ۱۳۹۱، ساعت ۰۴:۲۱
- من برای تست از EF 4.3.1.0 استفاده کردم و به نظر این محدودیت رو حداقل با select و projection ندارد و برنامه بدون مشکل اجرا شد.
- برای نگارش‌های قبل از آن این روش جواب می‌دهد:
 db.table.Where(...)
         .Select(p =>
                     new
                     {
                        p.Date1,
                        p.Comment,
                        p.Cost,
                        p.UserId,
                      })
                   .AsEnumerable() // مهم
                   .Select(...در اینجا مجاز هستید از هر نوع تابعی استفاده کنید..)
                   .ToList();

‫۱۲ سال و ۲ ماه قبل، سه‌شنبه ۱۷ مرداد ۱۳۹۱، ساعت ۰۳:۵۵
چه خطایی می‌ده؟ چون من الان استفاده کردم و خطایی نداد.
اگر یک چنین خطایی دریافت کردید:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
مربوط است به نال بودن یکی از مقادیر تاریخ ثبت شده در بانک اطلاعاتی. خاصیت را در سمت کدهای خود nullable تعریف کنید.