CDStructure -> CDStructure
CannedDataGenerator.dbContext.CDStructure -> CannedDataGenerator.Model.CDStructure
at lambda_method138(Closure , CDStructure , CDStructure , ResolutionContext )
at lambda_method137(Closure , IEnumerable`1 , IEnumerable`1 , ResolutionContext )
--- End of inner exception stack trace ---
at lambda_method137(Closure , IEnumerable`1 , IEnumerable`1 , ResolutionContext )
at CannedDataGenerator.Provider.CDGeneratorProvider.GetCDAsync() in /Users/andgmd/Projects/WireMock.CannedData/CannedDataGenerator/Provider/CDGeneratorProvider.cs:line 34}
{System.Collections.ListDictionaryInternal}
"ul"
{AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.
Mapping types:
CDStructure -> CDStructure
CannedDataGenerator.dbContext.CDStructure -> CannedDataGenerator.Model.CDStructure
at lambda_method138(Closure , CDStructure , CDStructure , ResolutionContext )
at lambda_method137(Closure , IEnumerable`1 , IEnumerable`1 , ResolutionContext )}
(null)
"Error mapping types.\n\nMapping types:\nIEnumerable`1 -> IEnumerable`1\nSystem.Collections.Generic.IEnumerable`1[[CannedDataGenerator.dbContext.CDStructure, CannedDataGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.IEnumerable`1[[CannedDataGenerator.Model.CDStructure, CannedDataGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
"AutoMapper"
" at lambda_method137(Closure , IEnumerable`1 , IEnumerable`1 , ResolutionContext )\n at CannedDataGenerator.Provider.CDGeneratorProvider.GetCDAsync() in /Users/andgmd/Projects/WireMock.CannedData/CannedDataGenerator/Provider/CDGeneratorProvider.cs:line 34"
{TDestination MapCore[TSource,TDestination](TSource, TDestination, AutoMapper.ResolutionContext, System.Type, System.Type, AutoMapper.IMemberMap)}
(null)
"IEnumerable`1", "IEnumerable`1"
MODELS
I am using relational Models
Main structure
public class CDStructure
{
private JObject _mapping;
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UUID { get; set; }
public string Type { get; set; }
[NotMapped]
public JObject Mapping
{
get
{
return this._mapping;
}
set
{
this._mapping = value;
}
}
public Guid IdRequest { get; set; }
public Request Request { get; set; }
public Guid IdResponse { get; set; }
public Response Response { get; set; }
[Column("Mapping")]
public string MappingStr
{
get
{
return this._mapping.ToString();
}
set
{
this._mapping = JsonConvert.DeserializeObject<JObject>(value);
}
}
public CDStructure()
{
}
}
Structure A
public class Request
{
private JObject _parameters;
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UUID { get; set; }
public string Url { get; set; }
public string Verb { get; set; }
[NotMapped]
public JObject Parameters
{
get
{
return this._parameters;
}
set
{
_parameters = value;
}
}
[Column("Parameters")]
public string ExtraDataStr
{
get
{
return this._parameters.ToString();
}
set
{
this._parameters = JsonConvert.DeserializeObject<JObject>(value);
}
}
public CDStructure CDStructure { get; set; }
public Request()
{
}
}
Structure B
public class Response
{
private JObject _data;
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UUID { get; set; }
public int ResponseCode { get; set; }
[NotMapped]
public JObject Data {
get
{
return this._data;
}
set
{
_data = value;
}
}
public CDStructure CDStructure { get; set; }
[Column("Data")]
public string DataStr
{
get
{
return this._data.ToString();
}
set
{
this._data = JsonConvert.DeserializeObject<JObject>(value);
}
}
}
I have the same replication under folders Model and dbContex
This is my Context Class
public class CDStructureContext : DbContext
{
public DbSet<CDStructure> cdStructure { get; set; }
public DbSet<Request> request { get; set; }
public DbSet<Response> response { get; set; }
public CDStructureContext(DbContextOptions options) :base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<CDStructure>()
.HasOne(x => x.Request)
.WithOne(x => x.CDStructure)
.HasForeignKey<CDStructure>(x => x.IdRequest);
modelBuilder.Entity<CDStructure>()
.HasOne(a => a.Response)
.WithOne(b => b.CDStructure)
.HasForeignKey<CDStructure>(b => b.IdResponse);
}
}
Populating the main Structure
string json = @"{id: '1',name: 'John Doe',address: 'St Unknown'}";
JObject jmapping = JObject.Parse(json);
json = @"{}";
JObject jobjparameters = JObject.Parse(json);
JObject Jobjdata = JObject.Parse(json);
this._dbContext.cdStructure.Add(new dbContext.CDStructure() { Type = "Json", Mapping = jmapping, Request = new dbContext.Request() { Parameters = jobjparameters, Verb = "GET", Url = "http:/localhost:8080/mockcd" }, Response = new Response() { ResponseCode = 200, Data = Jobjdata } });
this._dbContext.SaveChanges();
WHERE THE ERROR IS GENERATED
The error it generated when I using Automapper in the next line
var result = this._mapper.Map<IEnumerable<dbContext.CDStructure>, IEnumerable<Model.CDStructure>>(canneddata);
of the following asynchronous task
public async Task<(bool IsSuccess, string message, IEnumerable<Model.CDStructure> canned_data)> GetCDAsync()
{
try
{
var canneddata = await _dbContext.cdStructure.ToListAsync();
if (canneddata.Any())
{
var result = this._mapper.Map<IEnumerable<dbContext.CDStructure>, IEnumerable<Model.CDStructure>>(canneddata);
return (true, "Getting data", result);
}
return (false, "Doesn't contain any record", null);
}
catch (Exception ex)
{
return (false, ex.ToString(), null);
}
}