پس از معرفی ویژگیهای لازم ، در ادامه با نحوهی تبدیل این ویژگیها به معادل نگاشت آنها در automapper خواهم پرداخت.
متد زیر هستهی اصلی عملیات است و کلیهی نگاشتهای لازم را انجام میدهد. این متد وظیفهی تبدیل نگاشتها را دارد. نگاشتهایی که با Attributes مشخص شدهاند: public static void Initialize(Assembly assembly)
{ ...
نگاشت اشیاء امری مفید و لذت بخش است. ولی بخاطر تنظیمات خاص آن و افزایش کدها، همیشه کمی دردسر ساز بوده است. استفاده از کلاس Profile راه کار مناسبی است؛ اما در این حالت کلاس مقصد (ViewModel) از تنظیمات نگاشتها بی اطلاع میماند و فقط حاوی داده خواهد بود. برای ادغام کلاس و تنظیمات نگاشت در اینجا راهکاری ارائه گردید که در ادامه و با الگو گیری از همین ایده، اقدام به ارائهی روشی جدید میکنم که با استفاده از Attributeها تنظیمات نگاشت اشیاء ...
قرار دادن تمامی تنظیمات نگاشتها درون کلاسهای پروفایل تا حدودی حجم کدهای ما را در آینده زیاد خواهد کرد. public class TestProfile1 : Profile
{
protected override void Configure()
{
// این تنظیم سراسری هست و به تمام خواص زمانی اعمال میشود
this.CreateMap<DateTime, string>().ConvertUsing(new DateTimeToPersianDateTimeConverter());
this.CreateMap<User, UserViewModel>();
// ...
AutoMapper کتابخانهای
برای نگاشت اطلاعات یک شیء به شیءایی دیگر به صورت خودکار میباشد.در این مقاله چگونگی رسیدگی به Null property را در AutoMapper بررسی خواهیم کرد. فرض کنید شیء منبع دارای یک خاصیت Null است و میخواهید به وسیله Automaper شیء منبع را به مقصد نگاشت نمایید. اما میخواهید در صورت Null بودن شیء مبدا، یک مقدار پیش فرض برای شیء مقصد در نظر
گرفته شود . برای نمونه کلاسuser را که در آن از کلاس Address یک خاصیت تعریف شده، ...
مدل Student را به شکل زیر در نظر بگیرید
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public DateTime Birthdate { get; set; }
public string Tel { get; set; }
public string CellPhone { get; set; }
[Email]
public string Email { get; set; }
}
: آن را به صورت زیر Vie ...
در ادامه قسمت قبلی به برسی ویژگیهای پیشرفتهی AutoMapper میپردازیم...
Custom type converters
همانطور که از اسمش مشخصه، زمانی کاربرد داره که نوع عضو یا اعضای یک شی در مبداء، با معادلشون در مقصد یکی نیستند. مثلا فرض کنید نوع Bool در مبداء رو میخواهیم به نوع String در مقصد نگاشت کنیم؛ همون Yes و No معروف بجای True یا False .
کلاسهای زیر رو در نظر بگیرید:
public class Source
...
در پست قبلی مقدمهای داشتیم بر AutoMapper؛ مثالی که در اون پست عنوان شد سادهترین و پرکاربردترین روش استفاده از AutoMapper هست بنام Flattening که در واقع از یک شیء کل به یک شیء کوچکتر میرسیم.
همانطور که در قسمت اول گفتم AutoMapper کارش رو بر اساس قراردادها انجام میده یا همون Convention Base. یکی از قردادهای AutoMapper، نگاشت براساس نام اعضای اون شی هست؛ مثلا در مثال قبلی FirstName در مبداء، به خاصیتی با همین نام ...
AutoMapper کتابخانه ای ساده و سبک برای نگاشت اطلاعات یک شی به شی دیگر به صورت خودکار هست و...
اگه این پست رو مطالعه کرده باشید یه مشکل امنیتی بنام «Mass Assignment» مطرح شد.برای رفع این مشکل یک روش استفاده از ViewModel بود.
فرض کنید Model ما
public class User
{
public int Id { get; set; }
public string FirstName { get; s ...