Entity Farmework و Code First
بسم الله الرحمن الرحیم
برای طراحی پایگاه داده به وسیله Entity Farmework و Code First بهتر است این چند نکته را رعایت فرمایید:
بهتر است از نام Id به عنوان نام تمامی کلید های اصلی جداول استفاده کنید هر چند در بحث
convention over configuration این نکته مورد قبول است اما چیزی را که همه آن را به عنوان یک قرارداد نانوشته قبول دارند را عوض نکنید تا برای انجام کار توضیحاتی لازم نباشد.
بهتر است از نوع GUID برای کلید های اصلی جداول استفاده کنید. نوع int از لحاظ واکشی اطلاعات سریعتر است زیرا مقایسه عددی سریعتر از مقایسه رشته ای است.
باید در نظر داشته باشید در جداولی مثل شهر، استان، کشور می توانید از نوع int برای کلید اصلی استفاده کنید و هیچ مشکلی نخواهد بود اما بهتر است برای جداول اطلاعاتی که شماره ها بسیار ارزشمند هستند و بهتر است در کل دیتابیس عدد منحصر به فرد باشد از نوع GUID استفاده شود.
بهتر است نام کلیدهای خارجی یک نام از جدول + کلمه ای دی باشد:
بازیابی دیتابیس (Restore) به وسیله EntityFarmework
بسم الله الرحمن الرحیم
در پروژه های MVC شما نیاز خواهید پیدا کرد که دیتابیسی که به وسیله Entity Framework (معمولا در روش Code First) تغییر پیدا کرده است را به حالت قبل بازیابی کنید.
به ازای هر بار درخواست تغییر دیتابیس توسط EF یک شماره منحصر به فرد ایجاد می شود که می توانید در دیتابیس خود در تیبل Migration__ این پارت ها را مشاهده کنید.
برای برگرداندن دیتابیس خود به مرحله قبل می توانید به صورت زیر عمل کنید:
Update-Database -Target 2556
2556 شماره حالتی است که قبل از اعمال تغییرات ثبت شده بوده است.
تغییر دادن مقدار Timeout در SqlCommand
بسم الله الرحمن الرحیم
در بعضی اگر شما بخواهید یک دستور اسکیوال را از طریق سی شارپ فراخوانی کنید که مدت زمان اجرای آن دستور بسیار طولانی باشد با خطای زیر مواجه می شوید:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated
برای حل این مشکل شما باید مدت زمان Timeout را در SQL Command افزایش دهید و یا این پارامتر را غیر فعال کنید.
به صورت پیش فرض مدت زمان CommandTimeout در SqlCommand برابر با 30 ثانیه می باشد که شما می توانید به صورت زیر آن را تغییر دهید
SqlCommand sqlCommand= new SqlCommand("select * from table_EduOnline");
SqlCommand.CommandTimeout = 100;//100 secound
و یا با مساوی قرار دادن CommandTimeout برار با 0 آن را غیر فعال کنید
معرفی OLAP و OLTP
بسم الله الرحمن الرحیم
آموزش OLAP و OLTP
با توجه به تکنولوژی های مرتبط در خصوص طراحی و پیاده سازی پایگاه داده ها برای استفاده از سرویس های تحلیلی می توان این پایگاه داده را به دو
دسته کلی تقسیم کرد:
OLAP: همان طور که از نام این گروه مشخص است این پایگاه داده ها برای تحلیل و بررسی مورد استفاده قرار می گیرند که طبیعتا طراحی و ساختار آن با پایگاه داده های معمولی متفاوت خواهد بود. مثلا در طراحی این پایگاه داده ها از ایندکس های بیشتری استفاده می شود که سرعت واکشی و دسترسی به اطلاعات افزایش می یابد اما در عین حال سرعت درج و بر روز رسانی کاهش یافته که این مسئله باعث می شود همین کار در پایگاه داده های OLTP مناسب نباشد. معمولا این پایگاه داده را با کلمه DW خاتمه می یابند. DW مخفف عبارت Data warehouse می باشد که بیانگر پایگاه داده هایی است که برای تحلیل طراحی شده اند
OLTP: این پایگاه داده ها، همان پایگاه داده های اصلی هستند که طبیعتا هر مهندس DBA آن را برای بایگانی و جمع آوری اطلاعات ایجاد می کند. در مبحث BI (یا همان Business Intelligence که قبلا توضیحاتی را ارائه داده شد،BI در واقع بیانگر تبدیل داده ها برای تفسیر و تحلیل برای تجارتی هوشمند می باشد) شما می بایست ابتدا پایگاه داده خود را به صورت ساختار یافته طراحی کنید و سپس برای مباحث DM نسخه جدیدی از آن طراحی کنید البته معمولا در صورتی که پایگاه داده شما به درستی طراحی شده باشد تغییرات زیادی لازم نیست.
مفاهیم مربوط به طراحی OLAP
مهمترین مفهومی که در طراحی سرویس های تحلیلی وجود دارد، مکعب است. مکعب، نمایشی چند بعدی از مقدار کمی مورد تحلیل است. اگر بخواهیم خیلی صریح توضیحی ارائه دهیم، این مثال را در نظر بگیرید که شما می خواهید بدانید هر کالا با چه تعدادی و در چه زمان هایی و توسط چه مشتریانی خریداری شده است. خوب هر کدام از پارامتر ها را یک مقیاس در نظر بگیرید (طول، عرض و ارتفاع) اما نکته قابل توجه این مسئله است که در این مفاهیم می تواند بعد های بیشتری داشت، در این مثال پارامترهای دیگری چون فروشند گان، نوع فروش، سیستم کالا بر، و... پارامترهای دیگری را می توان دخیل کرد اما چون می خواهیم مثال ما ساده باشد همان سه بعد را در نظر می گیریم.
جداول موقت در SQL Server
بسم الله الرحمن الرحیم
آموزش جداول موقت در SQL Server
همانطور که می دانید در SQL server یک پایگاه داده از پیش تعریف شده با نام Tempdb وجود دارد، در بعضی مواقع شما نیاز به یک جدول موقت نیاز دارید این جداول در این پایگاه داده ذخیره می شود البته جداول به دو دسته تقسیم می شوند یکی ما متغییر هایی از جنس جدول و دیگری جداول موقت، منظور ما جداول موقت است.
خوب برای استفاده از ویژگی متغییر های جداول موقت کافی است مثل مثال زیر عمل نمایید:
DECLARE @Table TABLE
(
id INT ,name NVARCHAR(MAX)
);
DECLARE @i INT =0
WHILE(@i<20)
BEGIN
INSERT INTO @Table ([id],[Title]) VALUES (@i,'ESH')
SET @i+=1;
END
SELECT * FROM @Table
--UPDATE
--DELETE
ساخت Transaction در سی شارپ
بسم الله الرحمن الرحیم
آموزش برنامه نویسی آسنگرون در سی شارپ
در مطالب گذشته نحوه اجرای Transaction را در اسکیوال بیان کردم، خوب بسیاری از مزایای این کار بیان شد حال همین موارد را می توانیم در سی شارپ پیاده سازی نماییم، بدون توضیحات اضافی مثالی را بررسی می کنیم:
آموزش PIVOT در SQL Server
بسم الله الرحمن الرحیم
آموزش SQL Server
در بعضی مواقع نیاز است بجای نمایش نام ستون ها، مقدار فیلد به عنوان نام ستون و مقدار آن زیر ستون نمایش داده شود خوب بدون توضیح اضافی یک مثال مطرح می کنیم
SELECT [shiraz],[tehran]
FROM
(
SELECT [Title]
,[salary]
FROM [emp]
) AS TEMP
PIVOT
(
SUM(salary) FOR [Title] IN ([shiraz],[tehran])
)AS PVT
و در نهایت خروجی دستور
همگام و ناهمگام در SQL
بسم الله الرحمن الرحیم
آموزش برنامه نویسی ناهمگام در سی شارپ
در این بخش می خواهیم در خصوص نحوه و شیوه های اجرای دستورات در اسکیوال مباحثی را معرفی کنیم. همان طور که شما می دانید در زبان های مختلف برنامه نویسی در خصوص نحوه اجرای دستورات دو روش اصلی Synchronize و ASynchronize وجود دارد. در روش Synchronize تا اتمام دستورات نرم افزار شما عملا متوقف شده و به اصطلاح Lock می شود خوب وقتی این اتفاق برای ثبت یک رکورد باشد هیچوقت محسوس نیست اما فکر کنید این فرایند برای ثبت تعداد زیادی رکورد اتفاق بیافتد در این حالت سایر پردازش های نرم افزار شما باید منتظر بمانند تا فرایند کار با اسکیوال به پایان برسد!
در روش دوم ASynchronize، پردازش های اسکیوال شما همراه با سایر پردازش های نرم افزار شما همزمان انجام خواهد شد.
مثال:
برای دانلود مثال لطفا کلیک کنید
عنوان: ASynchronize
حجم: 1.05 کیلوبایت
چطور سرعت واکشی اطلاعات را افزایش دهیم؟
بسم الله الرحمن الرحیم
آموزش SQL Server
در بسیاری از پروژه ها به دلیل حجم پایین اطلاعات و تراکنش اندک در RW کردن اطلاعات هیچ نیازی به بهینه سازی اطلاعات نیست، اماممکن است شما هم مثل بنده بخواهید پایگاه داده ای را طراحی کنید که سرعت واکشی بسیار
معرفی دو DataType در SQL
بسم الله الرحمن االرحیم
آموزش SQL Server
Timestamp
در بعضی مواقع نیاز است شما اطلاعات درون یک پایگاه داده را به صورت Mirror ذخیره کنید، یعنی ما یک پایگاه داده اصلی و یک پایگاه داده پشتیبان داریم که اطلاعات بر روی پایگاه داده اصلی RW می شود و نسخه ای از آن نیز بر روی پایگاه داده دوم بایگانی می شود. خوب فکر کنید این کار را در سطح بسیار کوچکتر و فقط بر روی یک جدول در یک پایگاه داده انجام دهید یعنی اطلاعات این جدول با ارزش بوده و می خواهید به صورت ساده هر تغییری که در اطلاعات جدول شماره یک صورت گرفت بر روی جدول شماره دو انجام شود. راه حل؟
خوب بعضی ها اولین راه را انتخاب می کنند یعنی هر عملیات CUD را بروی جدول شماره یک اگر صورت گرفت بر روی جدول شماره دو نیز همان کار را تکرار می کنند، خوب است.
خوب راه دیگر استفاده از فیلد TimeStamp است که مقدار باینری را در خود نگه می دارد، در صورتی که مقدار رکورد عوض شود مقدار باینری این فیلد نیز عوض خواهد شد
پس اگر بخواهید متوجه شوید که مثلا بر روی رکورد شما توسط کاربر تغییری صورت گرفته می توان با مشاهده مقدار این فیلد، به این جواب برسید مثال: