Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在多对多关系代码优先样式上设置属性?_C#_Ef Code First_Many To Many_Entity Relationship Model - Fatal编程技术网

C# 如何在多对多关系代码优先样式上设置属性?

C# 如何在多对多关系代码优先样式上设置属性?,c#,ef-code-first,many-to-many,entity-relationship-model,C#,Ef Code First,Many To Many,Entity Relationship Model,我正在为我的计划工具开发一个实体关系数据模型。最终结果应该是一个ASP.NET/MVC4应用程序 这是我的E/R图的一部分: 在上面的图像中,我试图将事件和组合之间的多对多关系形象化。在我的模型中,我还希望能够存储来自任意事件的乐曲(来自不同事件/协奏曲的同一乐曲可能有许多不同的录制版本) 以下是我到目前为止所做的工作(以及代码优先数据模型的相关代码): 公共类组合 { 公共成分() { 仪器=新集合(); 事件=新集合(); } [关键] 公共int Id{get;set;} 公共bool活

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

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

在上面的图像中,我试图将
事件
组合
之间的多对多关系形象化。在我的模型中,我还希望能够存储来自任意
事件的
乐曲
(来自不同事件/协奏曲的同一乐曲可能有许多不同的录制版本)

以下是我到目前为止所做的工作(以及代码优先数据模型的相关代码):

公共类组合
{
公共成分()
{
仪器=新集合();
事件=新集合();
}
[关键]
公共int Id{get;set;}
公共bool活动{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共时间跨度Durata{get;set;}
公共虚拟编写器编写器{get;set;}
公共虚拟作曲家类型{get;set;}
公共虚拟ICollection工具{get;set;}
公共虚拟ICollection事件{get;set;}
}
_

公共类事件
{    
公共活动()
{
组合=新集合();
成员=新集合();
}
[关键]
公共int Id{get;set;}
公共bool活动{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共日期时间起始日期{get;set;}
公共日期时间结束日期{get;set;}
公共虚拟ICollection成员{get;set;}
公共虚拟ICollection组合{get;set;}
公共虚拟日历{get;set;}
公共虚拟事件类型EventType{get;set;}
公共虚拟位置{get;set;}
}
我的问题:在我的代码中,在哪里添加关系属性“Recording”


编辑:我必须创建链接表还是有更好的替代方案?

您试图实现的是与属性的多对多关系。为了在关系数据库中建模N到M个关系,您将始终需要一个中间表。要使用EF添加属性,需要另一个实体来建模关系并正确映射它。在本问题中,将解释如何执行此操作:


Thx用于链接。在我将此标记为答案之前,我应该做一些测试。谢谢你的答案,我很高兴你修复了它。
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; }
}