زمانیکه در EF Code first تعریف خاصیتی به نحو زیر باشد
در حین کار با SQL Server به صورت خودکار به nvarchar max نگاشت میشود. اما همین تعریف در SQL Server CE به nvarchar 4000 نگاشت خواهد شد؛ چون این بانک اطلاعاتی نوعهای max دار را پشتیبانی نمیکند.
بنابراین اگر هدف، ثبت اطلاعات در فیلدی از نوع ntext در این بانک اطلاعاتی باشد باید به یکی از دو روش زیر عمل کرد:
بله. فقط کافی است یک MaxLength را بالای خاصیت قرار داد (بدون تعیین طول آن) تا به صورت خودکار در SQL Server CE به ntext نگاشت شود و یا میتوان نوع ستون را صریحا تعیین کرد:
روش اول بهتر است از این جهت که با بانکهای اطلاعاتی مختلف سازگاری بهتری دارد. برای مثال نوع ntext در SQL Server کامل، منسوخ شده درنظر گرفته میشود اما اگر از ویژگی MaxLength در اینجا استفاده گردد به صورت خودکار به nvarchar max نگاشت خواهد شد و در SQL Server CE به ntext .
بنابراین قید MaxLength بر روی خواصی که قرار است حاوی متونی طولانی باشند، میتواند به عنوان یک کار مفید جهت سازگاری با بانکهای مختلف، به شمار آید.
public string Content { get; set; }
بنابراین اگر هدف، ثبت اطلاعات در فیلدی از نوع ntext در این بانک اطلاعاتی باشد باید به یکی از دو روش زیر عمل کرد:
[MaxLength] public string Content { get; set; }
[Column(TypeName = "ntext")] public string Text { get; set; }
بنابراین قید MaxLength بر روی خواصی که قرار است حاوی متونی طولانی باشند، میتواند به عنوان یک کار مفید جهت سازگاری با بانکهای مختلف، به شمار آید.