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