如何在第一种风格的多对多关系代码上设置属性?

时间:2013-07-04 13:44:14

标签: c# ef-code-first many-to-many entity-relationship-model

我正在为我的管弦乐队规划工具开发实体关系数据模型。最终结果应该是ASP.NET / MVC4应用程序。

这是我的E / R图的一部分:

Orchestra planning tool E/R diagram

在上图中,我尝试想象EventComposition之间存在多对多关系。在我的模型中,我还希望能够存储来自任意Composition的{​​{1}}的录音(可以有来自不同事件/协奏曲的相同乐曲的许多不同录音版本)。

这是我到目前为止所做的(使用我的代码优先数据模型的相关代码):

Event

_

public class Composition
{
    public Composition()
    {
        Instruments = new Collection<Instrument>();
        Events = new Collection<Event>();
    }

    [Key]
    public int Id { get; set; }
    public bool Active { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }
    public TimeSpan Durata { get; set; }

    public virtual Composer Composer { get; set; }
    public virtual Composer Genre { get; set; }
    public virtual ICollection<Instrument> Instruments { get; set; }
    public virtual ICollection<Event> Events { get; set; }
}

我的问题:我的代码在哪里添加关系属性“录制”?

编辑:我是否必须创建链接表,还是有更好的选择?

1 个答案:

答案 0 :(得分:1)

您要实现的目标与属性的多对多关系称为。为了在关系数据库中建模N到M关系,您将始终需要一个中间表。要使用EF添加属性,您需要另一个实体来建模关系并正确映射它。在这个问题中,它解释了如何做到这一点:

Entity Framework Code 1st - Mapping many-to-many with extra info