मैंने अपनी परियोजना में एक वैश्विक ऑटोमैपर कॉन्फ़िगरेशन परिभाषित किया था जो मुझे मेरे कोड में Mapper.Map<targetType>(sourceObject);
का उपयोग करने की अनुमति देगा। (नीचे मेरी कॉन्फ़िगरेशन देखें।)ऑटोमैपर का कहना है Mapper.Map अप्रचलित, वैश्विक मैपिंग है?
मैंने NuGet पैकेज को अपडेट किया, और मुझे यह संदेश दिखाई देता है कि Mapper.Map अप्रचलित/अवमूल्यन है। मैं वापस चला गया GitHub पर Automapper और इस तरह उदाहरण देखने के लिए:
[Test]
public void Example()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source1, SubDest1>().FixRootDest();
cfg.CreateMap<Source2, SubDest2>().FixRootDest();
});
config.AssertConfigurationIsValid();
var mapper = config.CreateMapper();
var subDest1 = mapper.Map<Source1, SubDest1>(new Source1 {SomeValue = "Value1"});
var subDest2 = mapper.Map<Source2, SubDest2>(new Source2 {SomeOtherValue = "Value2"});
subDest1.SomeValue.ShouldEqual("Value1");
subDest2.SomeOtherValue.ShouldEqual("Value2");
}
मैं हर विधि एक मानचित्रण का उपयोग करता है में एक विन्यास बनाने के लिए करने के लिए जा रहा हूं?
मेरे वर्तमान वैश्विक विन्यास:
namespace PublicationSystem.App_Start
{
public class AutoMapperConfig
{
public static void CreateMaps()
{
CreateProjectMaps();
}
private static void CreateProjectMaps()
{
Mapper.CreateMap<Project, ProjectCreate>();
Mapper.CreateMap<Project, ProjectSelectable>();
//...
}
}
}
अद्यतन: धन्यवाद स्कॉट चेम्बरलेन से कुछ कोचिंग के लिए मैं इस तरह एक वर्ग बनाया है:
public class MkpMapperProfile : AutoMapper.Profile
{
protected override void Configure()
{
this.CreateMap<Project, ProjectCreate>();
this.CreateMap<Project, ProjectSelectable>();
this.CreateMap<Project, ProjectDetails>();
// Many Many other maps
}
}
मैं सोच रहा हूँ मैं चाहिए मेरे बेसकंट्रोलर कक्षा में 'मैपर कॉन्फ़िगरेशन' है। मैंने ऐसा कुछ करना शुरू किया:
public partial class BaseController : Controller
{
private MapperConfiguration mapConfig;
public BaseController()
{
db = new MkpContext();
SetMapperConfig();
}
private void SetMapperConfig()
{
mapConfig = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MkpMapperProfile>();
});
}
public BaseController(MapperConfiguration config)
{
db = new MkpContext();
this.mapConfig = config;
}
}
क्या मैं सही रास्ते पर हूं?
ऑटोमैपर विश्व स्तर पर स्कॉप्ड स्थिर कार्यों से दूर जा रहा है। यह विभिन्न लेखकों द्वारा लिखित पुस्तकालयों को एक दूसरे के साथ हस्तक्षेप किए बिना ऑटोमैपर का उपयोग करने की अनुमति देता है। –
मुझे यकीन नहीं है कि मेरे लिए इसका क्या अर्थ है। मुझे यहां और वहां जानकारी के बिट मिल रहे हैं, लेकिन यह मेरे लिए पूरी तस्वीर नहीं बना रहा है। मैंने इसे पढ़ लिया है: https://github.com/AutoMapper/AutoMapper/wiki/Migrating-from-static-API लेकिन यह समझ में नहीं आता है। क्या मुझे ऑटोमैपर का उपयोग करने वाले प्रत्येक ActionResult में कॉन्फ़िगरेशन को परिभाषित करने की आवश्यकता है? मैं इसे एक डेटालियर में ले जा सकता हूं ... और मेरे ऐप में 'एमवीसी एप्लीकेशन' मैपर कॉन्फ़िगरेशन 'प्रतीत नहीं होता है। यह कहां परिभाषित किया गया है? –
आप एक बनाते हैं, मूल रूप से 'प्रोफ़ाइल' से प्राप्त कक्षा बनाते हैं, 'कॉन्फ़िगर()' फ़ंक्शन को ओवरराइड करते हैं, फिर अपने 'CreateProjectMaps' में पेस्ट करें लेकिन 'Map.' –