البرمجة

تكوين AutoMapper في ASP.NET Core 1.0 باستخدام Dependency Injection

في مقالتي هذه، سأقدم لك شرحاً شاملاً حول كيفية تكوين AutoMapper 4.2 في تطبيق ASP.NET Core 1.0 MVC6 باستخدام حاوي الخدمات المدمج في النظام. سنركز على استخدام حقن الإعتماد (Dependency Injection) لتكوين AutoMapper واستخدامه بشكل فعال في جميع أنحاء التطبيق.

أولاً وقبل كل شيء، يجب عليك تحديد الخدمة التي تحتاج إليها لتنفيذ AutoMapper. في حالتك، تحتاج إلى خدمة IMapper. سنبدأ بتكوين هذه الخدمة في ملف Startup.cs.

csharp
// Startup.cs public void ConfigureServices(IServiceCollection services) { // أولاً، قم بتكوين AutoMapper باستخدام MapperConfiguration var mappingConfig = new MapperConfiguration(mc => { mc.AddProfile(new YourMappingProfile()); // يمكنك إنشاء ملف تعيين خاص بك هنا }); // ثم، قم بتسجيل IMapper كخدمة مستعارة مع الحاوية IMapper mapper = mappingConfig.CreateMapper(); services.AddSingleton(mapper); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // يمكنك ترك هذا الجزء كما هو إذا لم تحتاج إلى شيء خاص في Configure }

الأمر الرئيسي هو استخدام AddSingleton لتسجيل خدمة IMapper كخدمة واحدة مشتركة. هذا يعني أنه سيتم إعادة استخدام نفس الخدمة في كل مكان يتم فيه طلب IMapper.

الآن، لديك IMapper مكونة بشكل صحيح في الحاوية، دعونا نتأكد من استخدامها في التحكم.

csharp
// ProductsController.cs public class ProductsController : Controller { private readonly IMapper _mapper; // حقن IMapper في البناء public ProductsController(IMapper mapper) { _mapper = mapper; } public IActionResult Create(ProductViewModel vm) { // استخدام IMapper لتعيين Product من ProductViewModel Product product = _mapper.Map(vm); // قم بتنفيذ الإجراء اللازم مع الكائن Product } }

قد يكون هناك بعض الأسباب التي تؤدي إلى عدم العمل السليم لديك. تأكد من مراجعة ملف YourMappingProfile للتأكد من أن جميع تعيينات التحويل الخاصة بك تم تكوينها بشكل صحيح.

من خلال اتباع هذه الخطوات، يجب أن تكون قادرًا الآن على تكوين AutoMapper بشكل صحيح في تطبيق ASP.NET Core 1.0 MVC6 باستخدام Dependency Injection واستخدامه بنجاح في تحويل البيانات بين ViewModel و Model الخاص بك.

المزيد من المعلومات

في إطار استكمال تكوين AutoMapper بشكل فعّال في تطبيق ASP.NET Core 1.0 MVC6، يمكننا إلقاء نظرة على بعض النقاط الإضافية التي يمكن أن تساعدك في فهم كيفية استخدام هذه التقنية بشكل أفضل:

1. استخدام AutoMapper Profiles:

يفضل إنشاء ملف (Profile) خاص بك لتعيين جميع تحويلات AutoMapper فيه. يمكن فعل ذلك عن طريق إنشاء فئة تمتد من Profile وتحتوي على معرفات الخرائط.

csharp
// YourMappingProfile.cs public class YourMappingProfile : Profile { public YourMappingProfile() { CreateMap().ReverseMap(); // أضف المزيد من الخرائط حسب احتياجاتك } }

2. تحسين إعدادات AutoMapper:

يمكنك تحسين إعدادات AutoMapper لتناسب احتياجات تطبيقك. على سبيل المثال، يمكن تكوين AutoMapper لتجاوز الخصائص الفارغة أو لتجاوز الخصائص التي تحتوي على قيمة افتراضية.

csharp
// Startup.cs public void ConfigureServices(IServiceCollection services) { var mappingConfig = new MapperConfiguration(mc => { mc.AddProfile(new YourMappingProfile()); mc.ForAllMaps((typeMap, map) => map.PreCondition((src, dest, ctx) => src != null)); }); IMapper mapper = mappingConfig.CreateMapper(); services.AddSingleton(mapper); }

3. التعامل مع AutoMapper في خدمات أخرى:

إذا كنت بحاجة إلى استخدام AutoMapper في خدمات أخرى بدلاً من التحكمات فقط، يمكنك حقن IMapper مباشرة في تلك الخدمات.

csharp
// Example of a custom service public class ProductService { private readonly IMapper _mapper; public ProductService(IMapper mapper) { _mapper = mapper; } public ProductViewModel GetProductViewModel(Product product) { return _mapper.Map(product); } }

4. تسجيل AutoMapper لمستعار:

بدلاً من استخدام AddSingleton، يمكنك استخدام AddScoped أو AddTransient حسب حاجتك. مثلاً، إذا كانت هناك حاجة لإعادة تكوين AutoMapper في كل طلب، يمكنك استخدام AddScoped.

csharp
// Startup.cs public void ConfigureServices(IServiceCollection services) { var mappingConfig = new MapperConfiguration(mc => { mc.AddProfile(new YourMappingProfile()); mc.ForAllMaps((typeMap, map) => map.PreCondition((src, dest, ctx) => src != null)); }); IMapper mapper = mappingConfig.CreateMapper(); services.AddScoped(_ => mapper); }

باستخدام هذه النقاط وتعديلها وفقاً لاحتياجات تطبيقك، يمكنك تكوين AutoMapper بشكل صحيح واستخدامه بكفاءة في ASP.NET Core 1.0 MVC6 باستخدام حقن الإعتماد.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر