0

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

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

乐团规划工具 E/R 图

Event在上图中,我试图想象 a和 a之间存在多对多的关系Composition。在我的模型中,我还希望能够存储Composition任意的录音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; }
}

_

public class Event
{    
    public Event()
    {
        Compositions = new Collection<Composition>();
        Members = new Collection<Member>();
    }

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

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

    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    public virtual ICollection<Member> Members { get; set; }
    public virtual ICollection<Composition> Compositions { get; set; }
    public virtual Calendar Calendar { get; set; }
    public virtual EventType EventType { get; set; }
    public virtual Location Location { get; set; }
}

我的问题:在我的代码中,我应该在哪里添加关系属性“Recording”?

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

4

1 回答 1

1

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

Entity Framework Code 1st - 使用额外信息映射多对多

于 2013-07-09T06:58:52.307 回答