آی تی نرد

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

استفاده از ماژول Ninject.Extensions.Factory و الگوی Factory در زمان اعتبارسنجی Model در MVC

استفاده از الگوی Repository و پیاده سازی Dependency Injection با استفاده از کتابخانه ی Ninject برروی یک پروژه ی نسبتا بزرگ MVC بسیار کارامد خواهد بود.
به هرحال هر کدوم از این الگوها مزایای مربوط به خودش رو خواهد داشت. استفاده از الگوی اشاره شده به مراتب بیشتر از الگوهای دیگر در برنامه هایی که محوریت بیشتر آن برروی استفاده و تحلیل داده ها در بانک های اطلاعاتی هست می باشد، و استفاده از Ninject هم که مزایای خودش رو به این پروژه اضافه خواهد کرد.

بخش مهم اعتبارسنجی داده ها قبل از افزوده شدن به منبع ذخیره سازی نهایی مورد توجه است، در کلاس های Metadata که از طریق Attribute ها یا DataAnnotations اعتبار سنجی های اولیه صورت میگیرد زمانی نیاز به پیاده سازی یک اعتبارسنجی سفارشی و استفاده از Repository و استخراج داده های مورد نیاز به عنوان بخشی از این اعتبارسنجی می باشد. که متاسفانه عملیات ایجاد نمونه ی جدید کلاس Repository از طریق Field Injection یا هر نوع دیگری از Injection صورت نمی گیرد و با خطای null reference exception مواجه خواهید شد.

برای روشن کردن توضیحاتم یه مثال بزنم:
سناریویی رو در نظر بگیرید که در اون مشتری میخواد یک محصول رو خریداری کنه، اما باید بررسی بشه که اگر در لحظه ی خرید، تعداد محصول برابر با 0 هست پیغام خطای مناسب نمایش داده شود.
بنابراین ما یک کلاس Customer و یک کلاس Product که مربوط به اعتبارسنجی می باشد به شکل زیر خواهیم داشت،

بیشتر...

انتقال یک یا چند مجموعه سایت به دیتابیس دیگر و یا وب اپلیکیشن دیگر

سلام به دوستان

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

Move-SPSite <http://ServerName/Sites/SiteName> -DestinationDatabase <DestinationContentDb>

 

که پارامتر اول نام مجموعه سایت و پارامتر دوم نام دیتابیسی که قصد انتقال به اون رو دارید هست.

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

Get-SPSite -ContentDatabase <SourceContentDb> | Move-SPSite -DestinationDatabase <DestinationContentDb>

 

بخش اول دستور تمام مجموعه سایت هایی که داخل دیبتابیس <SourceContentDb> باشه رو برمیگردونه و به بخش دوم دستور پاس میده از اونجایی که پارامتر پیشفرض دستور Move-SPSite نام مجموعه سایت یا آبجکت SPSite هست به ازای هر مجموعه سایت اونها رو به دیتابیس <DestinationContentDb> منتقل میکنه.

با تمام توضیحات که دادم هنوز مشکل من حل نشده بود چون من میخواستم چند تا مجموعه سایت رو به یک وب اپلیکیشن (WebApplication) دیگه منتقل کنم.

اگه دستورات بالا رو برای این منظور استفاده کنید به خطای زیر بر میخورید :

 The site collection being moved and the destination content database must be within the same Web application.

 

این پیغام میگه که مجموعه سایت و دیتابیس مقصد باید در یک وب اپلیکیشن باشند!

بیشتر که تحقیق کردم مطلب مناسبی در این مورد پیدا نکردم. یاد صحبت یکی از دوستان (حمید جلالی) افتادم که میگفت بعضی مواقع علت اینکه پاسخ یه مسئله ای توی اینترنت پیداه نمیشه بیش از حد ساده بودن اون مsئله میتونه باشه!.

راه حلی که به ذهن من رسید این بود : 

بیشتر...