نظرات مطالب
استفاده از پروایدر SQLite در Entity Framework 7

یک نکته‌ی تکمیلی: اگر از 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
تمرکز اصلی نگارش بعدی EF روی روش Code first است و فعلا باید منتظر باشید تا با یک فریم ورک پخته مواجه شوید. در حال حاضر (مطابق تاریخ نگارش این مطلب) روش database first در EF ارجح است (و پخته) و اگر اصرار دارید که حتما code first کار کنید به NHibernate مهاجرت کنید.
برای لایه بندی با هر 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 شما است حذف کنید و بعد مجددا ایجاد کنید. به این صورت مشکلات به روز رسانی مدل را اصلا نخواهید داشت.
در حالت‌های دیگر هم امکان تهیه اسکریپت پیش بینی شده. شما می‌تونید بر اساس اسکریپت تولیدی بانک اطلاعاتی را به روز کنید.
مطالب
بلاگ‌ها و مطالب مطالعه شده در هفته قبل (هفته اول آبان)


وبلاگ‌های ایرانی


Visual Studio

  • ویژوال استودیو 2010 و دات نت فریم ورک 4، نگارش CTP برای دریافت!

امنیت اطلاعات

ASP. Net

طراحی وب


اس‌کیوال سرور


به روز رسانی‌ها


ابزارها

سی‌شارپ
  • ویژگی‌های جدید C# 4.0 ، قسمت دوم، پارامترهای پیش فرض (یا آرگومانهای اختیاری). (چیزی شبیه به VB !! بدون نیاز به overloading برای پیاده سازی آن)

دلفی
  • ویدیویی از Delphi Prism . (نگارشی از دلفی که به شکل افزونه‌ای کاملا یکپارچه در VS.Net قابل دسترسی است)

SharePoint

ویندوز

متفرقه


نظرات اشتراک‌ها
بررسی سلامت SQL Server از طریق PowerShell
چطور می‌توان دیتابیس و سرور را در DBList.txt تعریف کرد برای تست یک دیتایس محلی بر روی سیستم شخصیم از  .\MSSQLSERVER; ATM استفاده کردم موفق نشدم گزارشی در پوشه reports دریافت کنم اگر شما تست کردید لطفا راهنماییم کنید همچنین چطور می‌توان آدرس آی پی یک سرور و دیتابیسی که نام کاربری و رمز عبور دارد برای تست به فایل  DBList.txt اضافه کرد

نظرات مطالب
EF Code First #4
من مراحل بالا رو رفتم اما مشکلی که هست اینه که دفعه اول که دستور update-databse  رو اجرا می‌کنم دیتابیس ایجاد میشه اما دفعه دوم بااجرای این دستور پیغام خطای زیر میاد

 
.Cannot open database "*****" requested by the login. The login failed.
'*****'  Login failed for user 
 در واقع برنامه به دیتابیسی که خودش ساخته دسترسی نداره .
نظرات مطالب
افزودن یک DataType جدید برای نگه‌داری تاریخ خورشیدی - 2
مثلا فرض کنید جدولی دارید که اطلاعات Task‌های یک شرکت رو نگه میداره که شامل تاریخ شروع و تاریخ پایان هر Task هم هست. اگه این جدول یک میلیون سطر داده داشته باشه و بخوایم Task هایی که مدت زمان انجام اونها کمتر از 5 روز بوده رو انتخاب کنیم تفاوت فاحشی با datetime خواهیم داشت.
البته، همونطور که گفتم بسته به نوع استفاده داره و ممکنه از دیتابیسی به دیتابیس دیگه فرق بکنه.
نظرات مطالب
بازگردانی پایگاه داده بدون فایل لاگ
سلام
دیتابیسی هست که به حالت InRecovery رفته. در SQL Server Management Studio در لیست دیتابیس‌ها وجود داره ولی جلوی اسم اون عبارت InRecovery رو نوشته. در این حالت که هست نمیشه که ساختار این دیتابیس اعم از جدول ها، داده‌های داخل اون جداول، stored procedure‌ها و ... رو ببینیم. از اطلاعات اون هم پشتیبان گیری نشده و به داده‌های داخل اون نیاز هست. شما می‌دونید مشکل چیه و چطور حل میشه ؟
با تشکر
مطالب
ارتقاء به NH 3.2 - قسمت دوم

پیشتر مطلبی را در مورد 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 کامپایل شده در فایل فایل و سپس بارگذاری خودکار آن در حین اجرای برنامه جهت بالا بردن سرعت بارگذاری اولیه برنامه.