我一直試圖讓這個工作太久。我看過每個我能找到的自動映射器問題,但仍然沒有運氣。Automapper多對多
如何配置Automapper,以便它能正確映射我的業務實體和我的數據庫模型之間的許多屬性?
我正在使用DB模式使用DB第一個數據模型。
我有這些實體對象:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public DateTime CreateDate { get { return DateTime.Now; } private set { } }
public List<Department> Departments { get; set; }
public List<Company> Companies { get; set; }
}
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreateDate { get { return DateTime.Now; } private set { } }
}
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreateDate { get { return DateTime.Now; } private set { } }
}
我需要能夠更新這些。我需要將它們映射到數據庫對象,以便我可以更新用戶。
public partial class User{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Nullable<System.DateTime> CreateDate { get; set; }
public virtual ICollection<UsersCompany> UsersCompanies { get; set; }
public virtual ICollection<UsersDepartment> UsersDepartments { get; set; }
}
public partial class UsersCompany
{
public int Id { get; set; }
public int UserId { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
public virtual User User { get; set; }
}
public partial class UsersDepartment
{
public int Id { get; set; }
public int UserId { get; set; }
public int DepartmentId { get; set; }
public virtual Department Department { get; set; }
public virtual User User { get; set; }
}
我有一個方法,我傳遞實體並嘗試將其映射到db模型。這就是我經過大約100次不同的嘗試來讓automapper禮貌地映射我的連接表......沒有運氣。
private DBUser ToDataModel(User user)
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, DBUser>()
.ForMember(dest => dest.UsersDepartments, opt => opt.MapFrom(x => x.Departments));
cfg.CreateMap<User, DBUsersDepartment>()
.ForMember(x => x.User, y => y.MapFrom(z => z));
cfg.CreateMap<Department, DBUsersDepartment>();
});
IMapper mapper = config.CreateMapper();
return mapper.Map<DBUser>(user);
}
這是我看到後, '地圖'(注意,沒有用戶信息被映射):
你可以發佈'DBUser'類嗎?你的部分課程具有相同的屬性? –
是的,對不起,部分類本質上是DBUser。同班。 – utd1878