Как я могу использовать automapper для сопоставления свойства ICollection в моем классе модели.Как использовать AutoMapper для Map ManytoMany relaionship
Вот пример:
Mapper.CreateMap<Planiranje.Planning.Data.User, Model.Users>()
.ForMember(dst => dst.UserId, opts => opts.MapFrom(src => src.UserId))
.ForMember(dst => dst.Username, opts => opts.MapFrom(src => src.Username))
.ForMember(dst => dst.Firstname, opts => opts.MapFrom(src => src.Firstname))
.ForMember(dst => dst.Lastname, opts => opts.MapFrom(src => src.Lastname))
.ForMember(dst => dst.Email, opts => opts.MapFrom(src => src.Email))
.ForMember(dst => dst.Segment, opts => opts.MapFrom(src => src.Segment))
.ForMember(dst => dst.Groups, opts => opts.MapFrom(src => src.Groups));
Где группы является OfType ICollection.
С этим отображением я получаю следующее сообщение об ошибке
The following property on System.Text.RegularExpressions.Group cannot be mapped:
Groups
Add a custom mapping expression, ignore, add a custom resolver, or modify the destination type System.Text.RegularExpressions.Group.
Context:
Mapping to property Groups from Planiranje.Planning.Data.Group to System.Text.RegularExpressions.Group
Mapping to property Groups from System.Collections.Generic.ICollection`1[[Planiranje.Planning.Data.Group, Planiranje, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] to System.Collections.Generic.ICollection`1[[System.Text.RegularExpressions.Group, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Mapping from type Planiranje.Planning.Data.User to Planiranje.Model.Users
Exception of type 'AutoMapper.AutoMapperConfigurationException' was thrown.
После того как я избавиться от Syste.Text.RegularExpression я получил следующее сообщение об ошибке
The following property on Planiranje.Model.Groups cannot be mapped:
Groups
Add a custom mapping expression, ignore, add a custom resolver, or modify the destination type Planiranje.Model.Groups.
Context:
Mapping to property Groups from Planiranje.Planning.Data.Group to Planiranje.Model.Groups
Mapping to property Groups from System.Collections.Generic.ICollection`1[[Planiranje.Planning.Data.Group, Planiranje, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] to System.Collections.Generic.ICollection`1[[Planiranje.Model.Groups, Planiranje, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
Mapping from type Planiranje.Planning.Data.User to Planiranje.Model.Users
Exception of type 'AutoMapper.AutoMapperConfigurationException' was thrown.
Кроме того, вот мой источник/классы Источник Отдых на классы
namespace Planiranje.Planning.Data
{
using System;
using System.Collections.Generic;
public partial class User
{
public User()
{
this.Groups = new HashSet<Group>();
}
public int UserId { get; set; }
public string Username { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string Email { get; set; }
public string Segment { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
}
namespace Planiranje.Planning.Data
{
using System;
using System.Collections.Generic;
public partial class Group
{
public Group()
{
this.Users = new HashSet<User>();
}
public int GroupId { get; set; }
public string GroupName { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
и пункты назначения:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Diagnostics;
namespace Planiranje.Model
{
public class Users : ModelBase,IEntity
{
private int _userId;
public int UserId
{
get
{
return _userId;
}
set
{
_userId = value;
RaisePropertyChanged("UserId");
}
}
private string _username;
public string Username
{
get
{
return _username;
}
set
{
_username = value;
RaisePropertyChanged("Username");
}
}
private string _firstname;
public string Firstname
{
get
{
return _firstname;
}
set
{
_firstname = value;
RaisePropertyChanged("Firstname");
}
}
private string _lastname;
public string Lastname
{
get
{
return _lastname;
}
set
{
_lastname = value;
RaisePropertyChanged("Lastname");
}
}
private string _email;
public string Email
{
get
{
return _email;
}
set
{
_email = value;
RaisePropertyChanged("Email");
}
}
private string _segment;
public string Segment
{
get
{
return _segment;
}
set
{
_segment = value;
RaisePropertyChanged("Segment");
}
}
private IList<Groups> _groups;
public virtual IList<Groups> Groups
{
get
{
return _groups;
}
set
{
_groups = value;
RaisePropertyChanged("Groups");
}
}
public ModelEntityState ModelEntityState { get; set;}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Diagnostics;
namespace Planiranje.Model
{
public class Groups :ModelBase, IEntity
{
private int _groupId;
public int GroupId
{
get
{
return _groupId;
}
set
{
_groupId = value;
RaisePropertyChanged("UserId");
}
}
private string _groupname;
public string GroupName
{
get
{
return _groupname;
}
set
{
_groupname = value;
RaisePropertyChanged("GroupName");
}
}
private ICollection<Users> _users;
public virtual ICollection<Users> Users
{
get
{
return _users;
}
set
{
_users = value;
RaisePropertyChanged("Users");
}
}
public ModelEntityState ModelEntityState { get; set; }
}
}
Только один комментарий - все эти MapFroms совершенно бессмысленны. Не создавайте конфигурации для отображения свойств одного и того же имени. Это «Авто» «AutoMapper». Также, пожалуйста, отправьте свои исходные/целевые типы. –