当前位置: 首页 > 编程语言 > C#

如何在entity framework代码中有多对多关联分享

时间:2023-04-10 23:35:21 C#

C#学习教程:如何在实体框架代码中建立多对多关系我坚持以下几点。我有一个文件集合类,我希望这些文件与事件和/或人员相关intid{得到;设置;}公共字符串事件名{get;设置}公共虚拟ICollection文件{get;设置;}公共事件(){文件=新列表();}}公众人物{公共intid{get;设置;}公共字符串名称{get;set}publicvirtualICollectionfiles{get;set;}publicperson(){files=newlist();}}现在,当我生成数据库时,我的文件表有一个PersonID和EventID。我希望能够让用户将文件附加到人物和/或事件。您得到的是EFCodeFirst在将1映射到数据库的许多关联方面的默认行为。例如,Person类上有一个ICollection,那么,EF会在Files表(PersonId)上创建一个FK,并将其映射到Persons表上的IdPK。现在,我的猜测是你喜欢在File和Person之间建立多对多关系,这样每个File可以与很多人相关,每个Person可以有很多Files(Event对象也是如此)。实现此目的的一种方法是将File类的导航属性指向Event和Person类。因此,您的模型应更改为:publicclassFile{publicintId{get;放;}公共字符串路径{得到;放;}公共虚拟ICollection事件{get;放;}publicvirtualICollectionPersons{get;放;}}publicclassEvent{publicintId{get;放;}publicstringEventName{get;放;}publicvirtualICollectionFiles{get;set;}}publicclassPerson{publicintId{get;放;}publicstring}publicvirtualICollectionFiles{get;放;}}publicclassMyContext:DbContext{publicDbSetPersons{get;放;}公共DbSet事件{得到;放;}公共DbSet文件{get;放;因此EF将创建链接表(Events_Files和Files_Persons)以将这些多个关联映射到数据库。更新:将POCO与EF结合使用时,如果将导航属性标记为虚拟,您将选择加入一些额外的EF支持,例如延迟加载和关系修复。因此,通常认为在导航属性中使用虚拟键是一种很好的做法。以上就是C#学习教程的全部内容:实体框架代码中如何共享多对多关联。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: