在asp.net样板中自动映射一对一外键

时间:2016-12-21 15:54:40

标签: c# entity-framework ef-code-first automapper asp.net-boilerplate

假设我有以下类结构:

public class Pizza
{
    public int Id { get; set; }
    public virtual PizzaType PizzaType { get; set; }
}

public class PizzaType
{
    public int Id { get; set; }
    public string Name { get; set; }
}

现在,我需要一个DTO类,所以我可以将一个对象传递给UI进行编辑,然后传回服务以保存到数据库。因此:

[AutoMap(typeof(Pizza))]
public class PizzaEdit
{
    public int Id { get; set; }
    public int PizzaTypeId { get; set; }
}

目标是尽可能轻松地在PizzaPizzaEdit之间进行映射,以便在UI中进行编辑并保存回数据库。优选地,这将只是工作"。

我需要做些什么才能让PizzaPizzaEdit的映射工作并在DTO对象中包含PizzaTypeId

pizzaObj.MapTo<PizzaEdit>()有效,但PizzaTypeId始终为空。

我愿意根据需要更改课程结构。

1 个答案:

答案 0 :(得分:3)

只需将属性PizzaTypeId添加到Pizza类,它就会变为FKPizzaType表。

public class Pizza
{
    public int Id { get; set; }
    public virtual PizzaType PizzaType { get; set; }
    [ForeignKey("PizzaType")]
    public int PizzaTypeId { get; set; }
}
通过FK

或没有LazyLoading NotMapped ):

public class Pizza
{
    public int Id { get; set; }
    public virtual PizzaType PizzaType { get; set; }
    [NotMapped]
    public int PizzaTypeId { get { return PizzaType.Id; } }
}