Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么即使AssertConfigurationValid通过,我的Automapper配置也不起作用?_C#_Automapper - Fatal编程技术网

C# 为什么即使AssertConfigurationValid通过,我的Automapper配置也不起作用?

C# 为什么即使AssertConfigurationValid通过,我的Automapper配置也不起作用?,c#,automapper,C#,Automapper,我拥有以下实体: public class ContactDetailsJson { public string Zip { get; set; } public string Phone { get; set; } public string AreaCode { get; set; } public DateTime UpdatedDate { get; set; } public string SeoContactUrl { get; set; }

我拥有以下实体:

public class ContactDetailsJson
{
    public string Zip { get; set; }
    public string Phone { get; set; }
    public string AreaCode { get; set; }
    public DateTime UpdatedDate { get; set; }
    public string SeoContactUrl { get; set; }
    public string State { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string CompanyName { get; set; }
    public string ContactUrl { get; set; }
    public string Country { get; set; }
    public bool Owned { get; set; }
    public string City { get; set; }
    public string Title { get; set; }
    public string Email { get; set; }
    public string Address { get; set; }
    public string CompanyId { get; set; }
    public string ContactId { get; set; }
}

public class ExternalContactSearchResultsViewModel
{
    public int DisplayedPageNumber { get; set; }
    public int TotalResultsCount { get; set; }
    public int PageSize { get; set; }
    public IList<ContactResultViewModel> Results { get; set; }

    public class ContactResultViewModel
    {
        public string ContactId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Headline { get; set; }
        public string Company { get; set; }
        public string PublicUrl { get; set; }
        public bool HasAccess { get; set; }
        public DateTime LastUpdatedDate { get; set; }
    }
}
公共类ContactDetailsJson
{
公共字符串Zip{get;set;}
公用字符串电话{get;set;}
公共字符串区域代码{get;set;}
公共日期时间更新日期{get;set;}
公共字符串SeoContactUrl{get;set;}
公共字符串状态{get;set;}
公共字符串LastName{get;set;}
公共字符串名{get;set;}
公共字符串CompanyName{get;set;}
公共字符串ContactUrl{get;set;}
公共字符串国家{get;set;}
公共布尔拥有{get;set;}
公共字符串City{get;set;}
公共字符串标题{get;set;}
公共字符串电子邮件{get;set;}
公共字符串地址{get;set;}
公共字符串CompanyId{get;set;}
公共字符串ContactId{get;set;}
}
公共类ExternalContactSearchResultsViewModel
{
public int DisplayedPageNumber{get;set;}
公共int TotalResultCount{get;set;}
公共int PageSize{get;set;}
公共IList结果{get;set;}
公共类ContactResultViewModel
{
公共字符串ContactId{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串标题{get;set;}
公共字符串公司{get;set;}
公共字符串PublicUrl{get;set;}
公共bool HasAccess{get;set;}
公共日期时间LastUpdateDate{get;set;}
}
}
为了支持转换,我创建了以下映射,我已验证这些映射正在运行:

        Mapper.CreateMap<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>()
            .ForMember(dest => dest.Company, opt => opt.MapFrom(src => src.CompanyName))
            .ForMember(dest => dest.ContactId, opt => opt.MapFrom(src => src.ContactId))
            .ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.FirstName))
            .ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.LastName))
            .ForMember(dest => dest.HasAccess, opt => opt.MapFrom(src => src.Owned))
            .ForMember(dest => dest.Headline, opt => opt.MapFrom(src => src.Title))
            .ForMember(dest => dest.LastUpdatedDate, opt => opt.MapFrom(src => src.UpdatedDate))
            .ForMember(dest => dest.PublicUrl, opt => opt.Ignore());
Mapper.CreateMap()
.ForMember(dest=>dest.Company,opt=>opt.MapFrom(src=>src.CompanyName))
.FormMember(dest=>dest.ContactId,opt=>opt.MapFrom(src=>src.ContactId))
.ForMember(dest=>dest.FirstName,opt=>opt.MapFrom(src=>src.FirstName))
.ForMember(dest=>dest.LastName,opt=>opt.MapFrom(src=>src.LastName))
.ForMember(dest=>dest.HasAccess,opt=>opt.MapFrom(src=>src.Owned))
.ForMember(dest=>dest.Headline,opt=>opt.MapFrom(src=>src.Title))
.FormMember(dest=>dest.lastUpdateDate,opt=>opt.MapFrom(src=>src.UpdateDate))
.ForMember(dest=>dest.PublicUrl,opt=>opt.Ignore());
不幸的是,这种映射导致所有属性都为null(或默认值),这可以从下面的单元测试中看出

    [TestMethod]
    public void Automapper_Contact_Details_Json_Can_Be_Mapped()
    {
        // Setup
        EntityMapLoader.LoadEntityMappings();
        DateTime testDate = DateTime.Now;

        var json = new ContactDetailsJson
        {
            CompanyName = "company",
            ContactId = "12345",
            FirstName = "first",
            LastName = "last",
            Owned = true,
            Title = "title",
            UpdatedDate = testDate
        };

        // Act
        var result = Mapper.Map<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>(json);

        // Verify
        Assert.IsNotNull(result, "result was null");
        Assert.AreEqual("company", result.Company);
        Assert.AreEqual("12345", result.ContactId);
        Assert.AreEqual("first", result.FirstName);
        Assert.AreEqual("last", result.LastName);
        Assert.AreEqual(true, result.HasAccess);
        Assert.AreEqual("title", result.Headline);
        Assert.AreEqual(testDate, result.LastUpdatedDate);
    }
[TestMethod]
public void Automapper\u Contact\u Details\u Json\u Can\u Be\u Mapped()
{
//设置
LoadEntityMappings();
DateTime testDate=DateTime.Now;
var json=new ContactDetailsJson
{
CompanyName=“公司”,
ContactId=“12345”,
FirstName=“first”,
LastName=“last”,
拥有=真实,
Title=“Title”,
updateDate=testDate
};
//表演
var result=Mapper.Map(json);
//核实
IsNotNull(结果,“结果为null”);
断言.平等(“公司”,结果.公司);
Assert.AreEqual(“12345”,result.ContactId);
Assert.AreEqual(“first”,result.FirstName);
Assert.AreEqual(“last”,result.LastName);
aresequal(true,result.HasAccess);
Assert.AreEqual(“标题”,result.Headline);
AreEqual(testDate、result.lastUpdateDate);
}

我想不出是怎么回事。其他人看到什么了吗?

我试过这个,它对我很有效,我认为在加载映射或检查是否使用最新版本的automapper时出现了问题

 [TestFixture]
public class UnitTest
{

    [Test]
    public void Automapper_Contact_Details_Json_Can_Be_Mapped()
    {
        // Setup 

        DateTime testDate = DateTime.Now;

        var json = new ContactDetailsJson
        {
            CompanyName = "company",
            ContactId = "12345",
            FirstName = "first",
            LastName = "last",
            Owned = true,
            Title = "title",
            UpdatedDate = testDate
        };
        Mapper.CreateMap<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>()
        .ForMember(dest => dest.Company, opt => opt.MapFrom(src => src.CompanyName))
        .ForMember(dest => dest.ContactId, opt => opt.MapFrom(src => src.ContactId))
        .ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.FirstName))
        .ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.LastName))
        .ForMember(dest => dest.HasAccess, opt => opt.MapFrom(src => src.Owned))
        .ForMember(dest => dest.Headline, opt => opt.MapFrom(src => src.Title))
        .ForMember(dest => dest.LastUpdatedDate, opt => opt.MapFrom(src => src.UpdatedDate))
        .ForMember(dest => dest.PublicUrl, opt => opt.Ignore()); 

        // Act 
        var result = Mapper.Map<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>(json);

        // Verify 
        Assert.IsNotNull(result, "result was null");
        Assert.AreEqual("company", result.Company);
        Assert.AreEqual("12345", result.ContactId);
        Assert.AreEqual("first", result.FirstName);
        Assert.AreEqual("last", result.LastName);
        Assert.AreEqual(true, result.HasAccess);
        Assert.AreEqual("title", result.Headline);
        Assert.AreEqual(testDate, result.LastUpdatedDate);
    }
}
[TestFixture]
公共类单元测试
{
[测试]
public void Automapper\u Contact\u Details\u Json\u Can\u Be\u Mapped()
{
//设置
DateTime testDate=DateTime.Now;
var json=new ContactDetailsJson
{
CompanyName=“公司”,
ContactId=“12345”,
FirstName=“first”,
LastName=“last”,
拥有=真实,
Title=“Title”,
updateDate=testDate
};
Mapper.CreateMap()
.ForMember(dest=>dest.Company,opt=>opt.MapFrom(src=>src.CompanyName))
.FormMember(dest=>dest.ContactId,opt=>opt.MapFrom(src=>src.ContactId))
.ForMember(dest=>dest.FirstName,opt=>opt.MapFrom(src=>src.FirstName))
.ForMember(dest=>dest.LastName,opt=>opt.MapFrom(src=>src.LastName))
.ForMember(dest=>dest.HasAccess,opt=>opt.MapFrom(src=>src.Owned))
.ForMember(dest=>dest.Headline,opt=>opt.MapFrom(src=>src.Title))
.FormMember(dest=>dest.lastUpdateDate,opt=>opt.MapFrom(src=>src.UpdateDate))
.ForMember(dest=>dest.PublicUrl,opt=>opt.Ignore());
//表演
var result=Mapper.Map(json);
//核实
IsNotNull(结果,“结果为null”);
断言.平等(“公司”,结果.公司);
Assert.AreEqual(“12345”,result.ContactId);
Assert.AreEqual(“first”,result.FirstName);
Assert.AreEqual(“last”,result.LastName);
aresequal(true,result.HasAccess);
Assert.AreEqual(“标题”,result.Headline);
AreEqual(testDate、result.lastUpdateDate);
}
}

我尝试了这个方法,它对我很有效,我认为在加载映射或检查是否使用最新版本的automapper时出现了问题

 [TestFixture]
public class UnitTest
{

    [Test]
    public void Automapper_Contact_Details_Json_Can_Be_Mapped()
    {
        // Setup 

        DateTime testDate = DateTime.Now;

        var json = new ContactDetailsJson
        {
            CompanyName = "company",
            ContactId = "12345",
            FirstName = "first",
            LastName = "last",
            Owned = true,
            Title = "title",
            UpdatedDate = testDate
        };
        Mapper.CreateMap<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>()
        .ForMember(dest => dest.Company, opt => opt.MapFrom(src => src.CompanyName))
        .ForMember(dest => dest.ContactId, opt => opt.MapFrom(src => src.ContactId))
        .ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.FirstName))
        .ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.LastName))
        .ForMember(dest => dest.HasAccess, opt => opt.MapFrom(src => src.Owned))
        .ForMember(dest => dest.Headline, opt => opt.MapFrom(src => src.Title))
        .ForMember(dest => dest.LastUpdatedDate, opt => opt.MapFrom(src => src.UpdatedDate))
        .ForMember(dest => dest.PublicUrl, opt => opt.Ignore()); 

        // Act 
        var result = Mapper.Map<ContactDetailsJson, ExternalContactSearchResultsViewModel.ContactResultViewModel>(json);

        // Verify 
        Assert.IsNotNull(result, "result was null");
        Assert.AreEqual("company", result.Company);
        Assert.AreEqual("12345", result.ContactId);
        Assert.AreEqual("first", result.FirstName);
        Assert.AreEqual("last", result.LastName);
        Assert.AreEqual(true, result.HasAccess);
        Assert.AreEqual("title", result.Headline);
        Assert.AreEqual(testDate, result.LastUpdatedDate);
    }
}
[TestFixture]
公共类单元测试
{
[测试]
public void Automapper\u Contact\u Details\u Json\u Can\u Be\u Mapped()
{
//设置
DateTime testDate=DateTime.Now;
var json=new ContactDetailsJson
{
CompanyName=“公司”,
ContactId=“12345”,
FirstName=“first”,
LastName=“last”,
拥有=真实,
Title=“Title”,