C# 实体框架代码优先关系:一对多对多实体
这是我第一个使用EF的项目。我正在创建一个以电影和电视剧为实体的模型(这是一个示例)。两个人都有自己的笔记。注释也是一个实体。我想在电影->笔记和电视连续剧->笔记之间建立一对多的关系。如何做到这一点C# 实体框架代码优先关系:一对多对多实体,c#,entity-framework,C#,Entity Framework,这是我第一个使用EF的项目。我正在创建一个以电影和电视剧为实体的模型(这是一个示例)。两个人都有自己的笔记。注释也是一个实体。我想在电影->笔记和电视连续剧->笔记之间建立一对多的关系。如何做到这一点 注释中需要有一些内容来定义注释是属于电影还是系列 您不能创建具有两个不同父级且它们之间具有适当主键/外键关系的子级 假设Movies和TVSeries具有公共属性,一个选项是在Movies/TV关系中使用继承,并将注释挂起到超类上。比如: public abstract class Enterta
注释中需要有一些内容来定义注释是属于电影还是系列 您不能创建具有两个不同父级且它们之间具有适当主键/外键关系的子级 假设Movies和TVSeries具有公共属性,一个选项是在Movies/TV关系中使用继承,并将注释挂起到超类上。比如:
public abstract class EntertainmentBase
{
public int Id { get; set; }
public string Title { get; set; }
// other common properties
}
public class Movie
{
// properties specific to a movie
}
public class TVSeries
{
// properties specific to a TV Series
}
public class Note
{
public int NoteId { get; set; }
public int BaseEntertainmentId { get; set; }
}
谢谢克雷格!对我来说,这是一个糟糕的问题。我正在使用的实体实际上没有任何公共属性,注释需要单独绑定到每个实体。我想我必须创建两个note实体:MovieNotes和TVSeriesNotes。您总是可以使用我在过去提到的多态外键创建Notes实体。这意味着您存储了父级的密钥,但没有任何声明性引用完整性,因此您的代码必须知道要连接到哪个父级。您还需要使用guid之类的东西作为父实体的主键,这样就不会发生冲突。这很有意义。此应用程序正在从ColdFusion移植到.NET,并且在Notes具有noteid、parentId和parentType属性的表中。我能够使用parentId和parentType组合检索必要的注释。您的示例在使用BaseEntertainment类时似乎遵循类似的模式。@Helius06-真的吗?没有公共属性吗?然而你却声称笔记很普遍?这是一项共同财产。标题怎么会不常见?像演员、剧组、导演这样的事情怎么会不常见?@ErikFunkenbusch——我在问题中提到的实体就是一个例子。我使用的实际实体是不同的,没有任何公共属性。注释是这些实体之间唯一的公共属性。