繁体   English   中英

MVC-EF-多个外键映射

[英]MVC - EF - Multiple Foreign Key Mapping

抱歉,如果已经回答了,我找不到适合我情况的答案。

我有一个实体类和一个视图模型。 示例如下:

实体:

    public class Data
{
    [Key, Column(Order = 0)]
    public int ID { get; set; }

    [Column(Order = 1)]
    public Q1Values Q1 { get; set; }

    [Column(Order = 2)]
    public Q1Values Q2 { get; set; }

}

ViewModel:

    public class DataViewModel
{
    [Key, Column(Order = 0)]
    public int ID { get; set; }

    [Column(Order = 1)]
    public int Q1ID { get; set; }

    [Column(Order = 2)]
    public int Q2ID { get; set; }

    public List<Q1Values> Q1ValuesList {get;set;}

}

我遇到的问题是,使用相同的查找表“ Q1Values”时,我将有超过50个问题。 上面的问题是,在插入之前,我将不得不从视图模型到实体模型手动加载/映射FK实体。

我尝试了下面的视图模型

public class DataViewModel
{
[Key, Column(Order = 0)]
public int ID { get; set; }

[Column(Order = 1)]
public Q1Values Q1ID { get; set; }

[Column(Order = 2)]
public Q1Values Q2ID { get; set; }

public List<Q1Values> Q1ValuesList {get;set;}

}

然后,我将下拉菜单映射如下

@Html.DropDownListFor(m=>m.Q1.ID, new   SelectList(model.Q1Values,"ID","Name"))

但这仍然需要我将其映射到控制器中已完全加载的实体,因为它仅包含ID。

最佳做法是什么? 我是否需要为每个问题在控制器中映射完整实体? 似乎很累,因为它有很多重复项。

我尝试在我的实体类中手动定义外键,但似乎无法使其适用于多个FK。 见下文。

public class QOLData
{
    [Key, Column(Order = 0)]
    public int ID { get; set; }

    [Column(Order = 1)]
    public int Q1 { get; set; }

    [Column(Order = 2)]
    public int Q2 { get; set; }

    [ForeignKey("Q1,Q2")]
    public virtual Q1Values Q1Values { get; set; }
}

看看在Entity Framework Code First中为同一表定义多个外键 我认为有足够的信息可以解决您的问题。 希望这可以帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM