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

EF4HowtoExposeJoinTableswithMany-to-ManyRelationship分享

时间:2023-04-11 03:31:34 C#

包含前2个表的ID以形成M:M关系。在EF中,由于Essence2EssenceSet没有其他字段,因此它不会暴露在模型中。我发现当我已经拥有创建记录所需的2个ID但不一定加载Essence和EssenceSet记录(只是它们的ID)时,很难将记录插入到该表中有没有办法告诉EF不要以这种方式建模并始终包含连接表?还是我缺少一种更简单的方法来创建这些连接表记录?您可以在EF中创建M:N关系而无需检索对象:using(varcontext=newMyContext()){varfirstEntity=newFirstEntity{Id=firstId};varsecondEntity=newSecondEntity{Id=secondId;}语境。FirstEntities.Attach(firstEntity);context.SecondEntities.Attach(secondEntity);firstEntity.SecondEntities=newHashSet();firstEntity.SecondEntities.Add(secondEntity);context.SaveChanges();}无论如何,将联结表作为实体公开是可能的,但您将对EF感到失望并退回到SQL方法:删除由设计者创建的M:N关系添加一个新实体添加两列到新实体表示外键将新实体映射到联结表添加与相关实体的关联为添加的关系设置引用约束实体框架是一个ORM,因此当您使用它时,您不应该根据表来考虑数据库,而应该根据对象来考虑数据库。您不应该将身份插入到包含M2M关系的表中,但您应该加载关系的一侧,这应该公开另一侧的集合并将其添加到该集合中。对于M2M,您可能需要加载另一端并执行相同的操作。此外,我相信EF更喜欢为所有表设置一个列PK(我可能是错的),但您可能需要向M2M添加一个列并将其指定为PK。以上是C#学习教程:EF4如何公开多对多关系中连接表共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: