【问题标题】:Adding New Column to Mapped Table using Fluent API使用 Fluent API 向映射表添加新列
【发布时间】:2012-09-24 19:27:51
【问题描述】:

我有两个实体如下:

public class Project
{
    public int ID { get; set; }
    public string ProjectName { get; set; }
}

public Class FourteenSteps
{
    public int ID { get; set; }
    public string StepName { get; set; }
}

我想将这两个映射到一个实体中,我正在使用 Fluent API 进行如下操作:

modelBuilder.Entity<Project>()
    .HasMany(c => c.FourteenSteps)
    .WithMany(d => d.Projects)
    .Map(m => m.ToTable("FourteenStepStatus")
    .MapLeftKey("ProjectId")
    .MapRightKey("FourteenStepsId"));

现在,新表“FourteenStepStatus”有两个字段分别称为“ProjectId”和
“十四步”。

我想在“FourteenStepStatus”中再添加一个名为“IsCompleted”的字段,即 不属于其他两个实体。我怎样才能 这样做?

谢谢

【问题讨论】:

    标签: c# entity-framework fluent-interface


    【解决方案1】:

    如果您想在联结表中添加其他字段,则不能将其用于多对多关系。您必须改为引入一个新实体FourteenStepStatus,映射其所有列并映射两个一对多关系:一个在ProjectFourteenStepStatus 之间,第二个在FourteenStepsFourteenStepStatus 之间。映射多对多关系仅适用于联结表仅包含键的场景。

    【讨论】:

    • 感谢您的回复。我确实有 FourteenStepStatus 实体(下面是实体),我正在寻找的是在创建新项目记录时用映射数据填充该表。我怎样才能做到这一点?公共 int ID { 获取;放; } 公共 int ProjectId { 获取;放; } 公共虚拟项目项目 { 获取;放; } 公共 int FourteenStepsId { 获取;放; } 公共虚拟 FourteenStep FourteenSteps { 得到;放; } 公共布尔 IsCompleted { 获取;放; } 公共字符串注释 { 获取;放; }
    【解决方案2】:

    我得到了如何添加数据的答案。通过将对象添加到上下文的 FourteenStepStatus 实体。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      相关资源
      最近更新 更多