【问题标题】:MVC - EF - Multiple Foreign Key MappingMVC - EF - 多外键映射
【发布时间】:2017-02-28 20:35:43
【问题描述】:

抱歉,如果这个问题已经得到解答,我找不到适合我的情况的答案。

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

实体:

    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; }

}

视图模型:

    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;}

}

我的问题是我将有超过 50 个问题都使用相同的查找表“Q1Values”。上面的问题是我必须在插入之前手动将 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; }
}

【问题讨论】:

    标签: c# asp.net-mvc entity-framework viewmodel entity-model


    【解决方案1】:

    看看Defining multiple Foreign Key for the Same table in Entity Framework Code First。我认为有足够的信息来解决您的问题。希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 2014-05-31
      相关资源
      最近更新 更多