یک نکتهی تکمیلی: اگر از SQLite به همراه بستهی Microsoft.EntityFrameworkCore.Sqlite استفاده میکنید ... موتور SQLite آن، کمی قدیمی است. برای بهروز رسانی موتور خود SQLite، نیاز است بستهی SQLitePCLRaw.bundle_e_sqlite3 را هم به لیست ارجاعات برنامهی خود اضافه کنید (به صورت صریح). برای مثال نگارش 8.0.7 به همراه EF-Core هر چند ارجاعی را به SQLitePCLRaw.bundle_e_sqlite3 دارد، اما از نگارش 2.1.6 آن استفاده میکند که مربوط به سال قبل است.
آشنایی با FileTable در SQL Server 2012 بخش 1
- به چه نحوی از SQL Server استفاده میکنید؟ آیا سرور و برنامه دسکتاپ شما روی یک کامپیوتر هستند؟ برای اینکار بهتر است از SQL CE یا SQLite استفاده کنید؛ یا حتی LocalDB. هدف از SQL Server نصب آن روی یک سرور و خدمات دهی به چندین و چند کامپیوتر تحت شبکه است. برای استفاده روی یک کامپیوتر یعنی کسب و کار کوچک و عملا نیازی به SQL Server 2012 ندارد اینکار. زندگی مصرف کننده را سخت نکنید. نصب و نگهداری یک سرور کار هر شخصی نیست و برای سازمانها طراحی شده و نه مصارف کوچک تک کاربره دسکتاپ.
- با این توضیح اگر کسی به سرور شما دسترسی دارد، آیا نمیتواند مثلا اگر فایلها در دیتابیس ذخیره میشدند، اونها رو دستی با یک کوئری حذف کند؟ امنیت کار با سرور اینجا است که مطرح میشود و همچنین اطمینان به ادمینها.
- در مورد امنیت file table مراجعه کنید به مستندات مایکروسافت. مثلا: FileTables are secured by SQL Server security only
راهنمای آموزشی رایگان entity framework
برای لایه بندی با هر ORM ایی که کار میکنید (فرقی نمیکند که چه نامی دارد)، باید از الگوی Repository استفاده کنید (یک مطلب در این مورد در سایت هست). این مورد چند مزیت دارد:
- کد شما به یک ORM خاص وابسته نمیشود.
- چون از اینترفیس برای تعریف Repository استفاده میشود راحت میشود برای آن Mock نوشت و راحت Unit testing را روی آن پیاده سازی کرد؛ با توجه به اینکه در Unit test نباید از مرزهای برنامه خارج شد و اگر خارج شدید این نوع آزمایشات Integration test نام دارند و نه Unit test . با Mocking یک repository میشود دیتابیسی را در حافظه تشکیل داد و تست کرد.
- در این حالت DAL همان ORM شما است. Repository همان BLL خواهد بود و برای جدا سازی کدها از لایه نمایشی از یکی از الگوهای MVVM یا MVC یا MVP استفاده کنید.
برای به روز رسانی هم در روش database first بهتر است هر آنچه که در فایل edmx شما است حذف کنید و بعد مجددا ایجاد کنید. به این صورت مشکلات به روز رسانی مدل را اصلا نخواهید داشت.
در حالتهای دیگر هم امکان تهیه اسکریپت پیش بینی شده. شما میتونید بر اساس اسکریپت تولیدی بانک اطلاعاتی را به روز کنید.
وبلاگهای ایرانی
- گزارشی از PDC 2008 microsoftpdc.com و یک سری ویدیوی مرتبط با دات نت
Visual Studio
- ویژوال استودیو 2010 و دات نت فریم ورک 4، نگارش CTP برای دریافت!
- و تازههای آن (توسط یکی از اعضای اصلی تیم NHibernate)
- دمویی از ایجاد نمودارهای UML با VS.Net 2010 . (خوشبختانه حجم این مورد در مقایسه با دموهای PDC2008 بسیار کمتر است!)
امنیت اطلاعات
ASP. Net
- نگارش CTP2 پروژهVelocity . (این پروژه قرار است راه حل جامع caching مایکروسافت برای ASP.Net باشد)
طراحی وب
اسکیوال سرور
به روز رسانیها
- سرویس پک 3 بتا اس کیوال سرور 2005 هم ارائه شد (نگارش نهایی آن تا پایان سال جاری میلادی ارائه میشود.)
ابزارها
- مجموعه CodeRush یک نگارش express رایگان نیز ارائه داد. (به نظر من نگارش کامل آن بهترین ابزار refactoring برای VS.Net است)
سیشارپ
- ویژگیهای جدید C# 4.0 ، قسمت اول، واژه کلیدی جدیدی به نام dynamic
- ویژگیهای جدید C# 4.0 ، قسمت دوم، پارامترهای پیش فرض (یا آرگومانهای اختیاری). (چیزی شبیه به VB !! بدون نیاز به overloading برای پیاده سازی آن)
دلفی
- محصور کننده جدید SQLite برای دلفی 2009 (رفع مشکلات عدم سازگاری نگارش قبلی با سیستم یونیکد دلفی 2009)
- ویدیویی از Delphi Prism . (نگارشی از دلفی که به شکل افزونهای کاملا یکپارچه در VS.Net قابل دسترسی است)
SharePoint
- سطوح دسترسی کدها در SharePoint . (به شکل زیبایی این مساله را که مشکل اولیه اکثر وب پارت نویسها است توضیح داده است)
ویندوز
متفرقه
- SQL Server 2012 معرفی شد! | Arash | pspcommunity.org
- استفاده از چارت JQUERY در صفحات وب | امیر مددی | itbazaar.persianblog.ir
- آیا محصولات اپل واقعا امن هستند؟ | brown892 | www.negahbaan.com
- فارسی سازی Report Viewer | (بهروز راد) | www.codepro.ir
- مشکل دیتابیس در سرورهای اشتراکی | (Afshar Mohebbi) | blog.afsharm.com
- ترتیب اجرای اجزای یک کوئری اس کیوال | geekswithblogs.net
- چه نکاتی را باید حین کار با ریسمانها در نظر داشت؟ | beyondrelational.com
- مفهوم انشعابات در سیستمهای ورژن کنترل | geekswithblogs.net
- نکاتی جهت بهبود کارآیی EF | www.codeproject.com
- وضعیت سازگاری دات نت 4 و نیم با دات نت 4 | msmvps.com
بررسی سلامت SQL Server از طریق PowerShell
EF Code First #4
بازگردانی پایگاه داده بدون فایل لاگ
دیتابیسی هست که به حالت InRecovery رفته. در SQL Server Management Studio در لیست دیتابیسها وجود داره ولی جلوی اسم اون عبارت InRecovery رو نوشته. در این حالت که هست نمیشه که ساختار این دیتابیس اعم از جدول ها، دادههای داخل اون جداول، stored procedureها و ... رو ببینیم. از اطلاعات اون هم پشتیبان گیری نشده و به دادههای داخل اون نیاز هست. شما میدونید مشکل چیه و چطور حل میشه ؟
با تشکر
پیشتر مطلبی را در مورد 18 مقالهای که اکثر حالتهای Mapping موجود در NHibernate را خلاصه کرده بود، مطالعه کردید.
یک مورد هم در این مطلب به نظر در مقایسه با Fluent NHibernate درنظر گرفته نشده است و آن هم بحث AutoMapping است. Fluent NHibernate این قابلیت را دارد که بر اساس تعاریف کلاسهای شما و روابط بین آنها به صورت خودکار نگاشتها را تشکیل دهید. یعنی خودش مباحث ارتباطهای یک به چند و چند به چند و غیره را در پشت صحنه به صورت خودکار تولید کند؛ بدون حتی یک سطر کدنویسی اضافی. فقط حداکثر یک سری IAutoMappingOverride و همچنین تعدادی Convention نامگذاری را هم میتوان جهت تنظیمات این سیستم تمام خودکار اعمال کرد. مثلا توسط IAutoMappingOverride، یکی از خاصیتهای کلاس را به صورت Unique معرفی کرد و مابقی هم به صورت خودکار توسط قابلیت Autommaping نگاشت میشوند. یا توسط Convention نامگذاری سفارشی خود، به Fluent NHibernate اعلام میکنیم که من علاقمندم نام مثلا کلیدهای خارجی تشکیل شده بجای اعدادی منحصربفرد، از روش ویژهای که تعیین میکنم، ساخته شوند. اینجا است که به نظر من کار با NHibernate حتی از Entity framework هم سادهتر است (یا سادهتر شده است).
قابلیت AutoMapping یاد شده، در سیستم جدید توکار Mapping by code هم وجود دارد. فقط چون جایی به صورت درست و درمان مستند نشده، همه دور خودشان میچرخند! به همین جهت مثالی را در این زمینه آماده کردم که موارد زیر را پوشش میدهد:
- نحوه اعمال تنظیمات بانک اطلاعاتی با کدنویسی در NH3,2
- نحوه یکپارچه سازی این روش جدید با کتابخانه NHibernate Validator
- استفاده از NHibernate Validator جهت تنظیم طول فیلدهای بانک اطلاعاتی تولیدی به صورت خودکار
- نحوه تعریف قراردادهای نامگذاری ویژه (مثلا نام جداول تولید شده به صورت خودکار، برخلاف نام موجودیتها، جمع باشد نه مفرد)
- اضافه کردن قابلیت تشخیص many-to-many به auto-mapping موجود در NH3,2 (برای تشخیص این مورد به کمک امکانات مهیای پیش فرض NH3,2، باید اندکی کدنویسی کرد)
- نحوه بازنویسی قراردادهای پیش فرض auto-mapping. مثلا اگر قرار باشد همه چیز خودکار شود اما یکی از فیلدها به صورت unique معرفی شود چکار باید کرد.
- نحوه ذخیره اطلاعات mapping کامپایل شده در فایل فایل و سپس بارگذاری خودکار آن در حین اجرای برنامه جهت بالا بردن سرعت بارگذاری اولیه برنامه.