بر اساس رفتار پیش فرض در دیتابیس SQL Server، در زمان انجام دادن یک دستور که منجر به ایجاد تغییرات در اطلاعات موجود در جدول میشود (برای مثال دستور Update)، جدول مربوطه به صورت کامل Lock میشود، ولو آن دستور Update، فقط با یکی از رکوردهای آن جدول کار داشته باشد. در سیستمهای با تعداد تراکنش بالا و دارای تعداد زیاد کلاینت، این رفتار پیش فرض موجب ایجاد صفی از تراکنشهای در حال انتظار بر روی جداولی میشود که ویرایشهای زیادی بر روی آنها ...
بهرهگیری از یک تابع پویا برای افزودن، ویرایش در مثالهای گذشته دیدید که برای هر کدام از عملهای درج، ویرایش و حذف، تابعهای مختلفی نوشته بودیم که اینکار هنگامیکه یک پروژهی بزرگ در دست داریم زمانبر خواهد بود. چه بسا یک جدول بزرگ داشته باشیم و بخواهیم در هر فرمی، ستون یا ستونهای خاص بهروزرسانی شوند. برای رفع این نگرانی افزودن تابع زیر به سرویسمان گرهگشا خواهد بود. public bool AddOrUpdateOrDelete<TEntity> ...
در این مطلب تعدادی از شایعترین مشکلات حین کار با Entity framework که نهایتا به تولید برنامههایی کند منجر میشوند، بررسی خواهند شد.
مدل مورد بررسی public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BlogPost> BlogPosts { get; set; }
}
public class BlogPost
{
public int Id { get; set; }
...
1.
شاید یکی
از آزاردهندهترین مشکلات، برخورد با پیغامهای خطا، هنگام عملیات migration باشد. یکی از دهها نوع
خطا، زمانی رخ میدهد که متد seed در حال اجراست. در این
حالت هیچ نوع break-point ایی به کمک ما نخواهد آمد. سوال ایجاست که آیا میتوان این بخش را دیباگ نمود؟ بهترین راه حل، اجرای
آپدیت از طریق متدها(یا اکشن ها) است. فراخوانی migration بسیار ساده است. باید یک نمونه از کلاس Co ...
پشتیبانی SQL Server از Spatial data
از SQL Server 2008 به بعد، نوع داده جدیدی به نام geography به نوعهای قابل تعریف ستونها اضافه شدهاست. در این نوع ستونها میتوان طول و عرض جغرافیایی یک نقطه را ذخیره کرد و سپس به کمک توابع توکاری از آنها کوئری گرفت.
در اینجا نمونهای از نحوهی تعریف و همچنین مقدار دهی این نوع ستونها را مشاهده میکنید: CREATE TABLE [Geo](
[id] [int] IDENTITY(1,1) NOT NULL,
[Lo ...
اجرای Async اعمال نسبتا طولانی، در برنامههای مبتنی بر داده، عموما این مزایا را به همراه دارد:
الف) مقیاس پذیری سمت سرور
در اعمال سمت سرور متداول، تردهای متعددی جهت پردازش درخواستهای کلاینتها تدارک دیده میشوند. هر زمانیکه یکی از این تردها، یک عملیات blocking را انجام میدهد (مانند دسترسی به شبکه یا اعمال I/O)، ترد مرتبط با آن تا پایان کار این عملیات معطل خواهد شد. با بالا رفتن تعداد کاربران یک برنامه و در نت ...
در مقاله پیش رو، سعی شدهاست به شکلی تقریبا عملی، کلیاتی در مورد Authentication در MVC5 توضیح داده شود. هدف روشن شدن ابهامات اولیه در هویت سنجی MVC5 و حل شدن مشکلات اولیه برای ایجاد یک پروژه است.
در MVC 4 برای دسترسی به جداول مرتبط با اعتبار سنجی (مثلا لیست کاربران) مجبور به استفاده از متدهای از پیش تعریف شدهی رفرنسهایی که برای آن نوع اعتبار سنجی وجود داشت، بودیم. ر ...
برای حذف نمودن یک رکورد از دیتابیس 2 راه وجود دارد : 1- حذف به صورت فیزیکی 2- حذف به صورت منطقی ( مورد بحث این مطلب ) در حذف رکورد به صورت منطقی، طراحان دیتابیس، فیلدی را با نامهای متفاوتی همچون Flag , IsDeleted , IsActive , و غیره، در جداول ایجاد مینمایند. خوب، این روش مزایا و معایب خاص خودش را دارد. مثلا شما در هر پرس و جویی که ایجاد مینمایید، بایستی این مورد را چک نموده و رکوردهایی را فراخوانی نمایید که فیلد IsDeleted آن برابر با ...
در زمان ساخت مدل از بانک اطلاعاتی در روش Database First به صورت پیش فرض تنظیمات مربوط به اتصال (Connection String) مدل به بانک اطلاعاتی در فایل config برنامه ذخیره میشود. مشکل این روش آن است که در سیستمهای مختلف، بسته به بستری که نرم افزار قرار است بر روی آن اجرا شود، باید تنظیمات مربوط به بانک اطلاعاتی صورت گیرد. مثلا فرض کنید شما در زمان توسعه نرم افزار، SQL Server را به صورت Local بر روی سیستم خود نصب کرده اید و Connection String ساخت ...
در دنیای دات نت گرایشی برای تجزیه (abstract) کردن EF پشت الگوی Repository وجود دارد. این تمایل اساسا بد است و در ادامه سعی میکنم چرای آن را توضیح دهم. پایه و اساس
عموما این باور وجود دارد که با استفاده از الگوی Repository میتوانید (در مجموع) دسترسی به دادهها را از لایه دامنه (Domain) تفکیک کنید و "دادهها را بصورت سازگار و استوار عرضه کنید".
اگر به هر کدام از پیاده سازیهای الگو ...