কিভাবে অটোম্যাপার .ফোমেমবার ব্যবহার করবেন?


88

সত্তা থেকে ডিটিওতে রূপান্তর করতে আমি অটোম্যাপার সেট আপ করার চেষ্টা করছি। আমি জানি আমি কাস্টম ম্যাপিংস সেট আপ করার .ForMember()পরে ব্যবহার করব বলে মনে করি Mapper.CreateMap<Entity, DTO>(), তবে এটি কোনও উপলব্ধ পদ্ধতি বলে মনে হয় না।

স্পষ্টতার জন্য সম্পাদনা করুন: আমি যে ডকুমেন্টেশনটি পড়েছি তার লিঙ্ক, বা বেসিক সিনট্যাক্সের ব্যাখ্যা খুঁজছি না। আমি উত্তর এবং ডকুমেন্টেশনে বর্ণিত সঠিক বাক্য গঠন ব্যবহার করছি, উদাহরণস্বরূপ:

Mapper.CreateMap<EFAddress, Address>()
      .ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));

ক্রিয়েটম্যাপের মধ্যে যদি আমার একটি অবৈধ প্রকারের নাম থাকে তবে আমি "ফরমেম্বার "টিকে একটি বৈধ পদ্ধতি হিসাবে দেখতে পাই, তবে সাধারণভাবে প্রত্যাশার সাথে মওসিং পদ্ধতি স্বাক্ষরটি দেখায়। তবে আমি এটি দুটি বৈধ প্রকারের সাথে সাথেই ফরমেম্বার বলেছে যে এটি প্রতীকটি সমাধান করতে পারে না, যেন পদ্ধতিটি উপলভ্য নয়।

আমি যে জেনেরিক ক্লাসটি পূরণ করছি না তাতে কি কোনও ধরনের বাধা আছে?

ধন্যবাদ


4
automapper.codeplex.com/… সম্ভবত আপনি যা যা করছেন তার জন্য সম্ভবত সেরা ডকুমেন্টেশন। ক্রিয়েটম্যাপ কলটিতে জেনেরিক পরামিতিগুলি ভুলে যাবেন না।
ট্র্যাভিস

4
এটি লক্ষ করা উচিত যে Mapper.CreateMap<Source, Dest>()নীচের সমস্ত উত্তরে রেফারেন্সযুক্ত স্থির পদ্ধতিগুলি এখন (2016) অপ্রচলিত হিসাবে চিহ্নিত
বেন রিপলে

উত্তর:


132

নিম্নলিখিত বাক্য গঠন চেষ্টা করুন:

Mapper
    .CreateMap<Entity, EntityDto>()
    .ForMember(
        dest => dest.SomeDestinationProperty,
        opt => opt.MapFrom(src => src.SomeSourceProperty)
    );

বা যদি উত্স এবং গন্তব্য বৈশিষ্ট্যের একই নামগুলি থাকে তবে:

Mapper.CreateMap<Entity, EntityDto>();

আরও বিশদ এবং অন্যান্য ম্যাপিং পরিস্থিতিগুলির জন্য দয়া করে ডকুমেন্টেশনের সম্পর্কিত বিভাগগুলি দেখুন।


4
আমার সমস্যাটি হ'ল সেই প্রসঙ্গে "ফরমেম্বার" ব্যবহার করার চেষ্টা করার সময় আমি কেবল "ফর্মেম্বার 'চিহ্নটি সমাধান করতে পারি না" এমনভাবে পাই যে পদ্ধতিটির অস্তিত্ব নেই
নেলিয়াস

@Nellius, আপনি আপনার দেখানো নি অ পরিশ্রমী কোড। আমি একটি কাজের উদাহরণ দেখিয়েছি। আপনার প্রকল্পের অভ্যন্তরে অটোম্যাপারটি উল্লেখ করা হয়েছে এবং ডকুমেন্টেশনে প্রদর্শিত সিনট্যাক্স (এবং আমার উত্তরে) কাজ করবে তা নিশ্চিত করুন যে আপনি উত্স এবং গন্তব্য জেনেরিক ক্লাস উভয়ই সংজ্ঞায়িত করেছেন।
দারিন দিমিত্রভ

4
বোকা প্রশ্ন, অপ্টের অর্থ কী?
রিয়াদ গোমরি 3'14

@riadgomri বিকল্প / সদস্যের বিকল্পগুলি
5:52 এ অ্যান্ড্রুব

17

শেষ পর্যন্ত, আমি বিশ্বাস করি এটি রিসার্পারের সাথে একরকম বেমানান হয়ে উঠেছে।

রিশার্পার দেখে মনে হচ্ছে অটোম্যাপার কোডটি ভুলভাবে প্রদর্শিত হয়েছে, তবে ঠিক কাজ করে (যদিও এটি ত্রুটির বার্তাগুলি সহ লাল দেখায়)। রিমসার্প আনইনস্টল করা এই সমস্যাটিকে পুরোপুরি ঠিক করেছে।


4
রিসার্পারের কোন সংস্করণ? অটোমাপ্পারের কী সংস্করণ?
কলিন পিয়ার

4
আমি এই সমস্যা VisualStudio 2010 দেখুন AutoMapper এবং ReSharper 8.x প্রভাবিত মনে github.com/AutoMapper/AutoMapper/issues/381
dthrasher

আমার সাথে একই # 8.2 পুনরায় তবে বনাম 2012 এর সাথে 7.0 জরিমানা কাজ করেছে।
কার্লোস গিলারমো বোলাওস লোপেজ

কেন ৫১ টি ভোট দিয়ে উত্তর নির্বাচিত উত্তর নয়? হাস্যকর।
ক্রিস হকস

4
কারণ আমি যে প্রশ্নটি চেয়েছিলাম তা উত্তর দেয়নি। আমার প্রশ্নটি ভিজ্যুয়াল স্টুডিওতে স্বীকৃতিপ্রাপ্ত নয় এমন পদ্ধতিগুলি সম্পর্কে ছিল, যখন সঠিক সিনট্যাক্স ব্যবহার করে এবং সবকিছুকে সঠিকভাবে উল্লেখ করা হয়। এটি পুনরায় ভাগ করা সম্পর্কিত একটি বাগ হতে পারে। অন্য উত্তরটি আমার জিজ্ঞাসা করা প্রশ্নের সাথে খুব অনুরূপ প্রশ্নের উত্তর দেয় তবে আমি যা জিজ্ঞাসা করেছি এটির একটি সম্পূর্ণ ভুল উত্তর ছিল।
নেলিয়াস

9

একটি নমুনা বাস্তবায়ন নিম্নলিখিত হবে:

Mapper.CreateMap<Game, GameViewModel>()
  .ForMember(m => m.GameType, opt => opt.MapFrom(src => src.Type))

গেম এবং গেমভিউমোডেলের বৈশিষ্ট্যগুলির নাম পৃথক হওয়ায় আমাদের এই সম্পত্তিটি মানচিত্রের প্রয়োজন - যদি সেগুলি একই রকম হয় এবং একই ধরণের হয় তবে তার জন্য ফরমেবার প্রয়োজন হবে না

ফোরামবারের আর একটি ব্যবহার ম্যাপিংগুলিকে উপেক্ষা করা

Mapper.CreateMap<Game, GameViewModel>()
    .ForMember(dest => dest.Prize, opt => opt.Ignore());

1

এটি পাশাপাশি ব্যবহার করুন:

  CreateMap<Azmoon, AzmoonViewModel>()
            .ForMember(d => d.CreatorUserName, m => m.MapFrom(s => 
 s.CreatedBy.UserName))
            .ForMember(d => d.LastModifierUserName, m => m.MapFrom(s => 
s.ModifiedBy.UserName)).IgnoreAllNonExisting();

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.