0

产生我必须通过流畅的API生成的表如下:EF6:访问映射表,通过代码第一流利的API

modelBuilder.Entity<Person>() 
.HasMany(m => m.Friends) 
.WithMany() 
.Map(w => w.ToTable("Friendship").MapLeftKey("PersonID").MapRightKey("FriendID")); 

而这个工作正常,表正确生成。但在我的数据访问层中,如何通过实体框架在此表上的“友谊”上执行CRUD功能?因为我不能做这样的事情:

db.Friendships.Add(entity); 

因为“友谊”是不是在我的DbContext定义。

解决此问题的最佳方法是什么?在数据访问层中手动创建模型或硬编码SQL查询?还是另一种解决方案

回答

2

您不能直接访问友谊实体,因为它不存在。实体框架处理多对多关系的方式,友谊表不可见并且从不建模。如果您希望将其作为实体提供,则必须将实体显式添加到模型中,并用两个一对多关系替换多对多关系。

如果您所要问的是如何在多对多实体框架中创建实体之间的关系,它应该像添加对集合的引用一样简单。

如果Person1Person2是实体,那么Person1.Friends.Add(Person2)应该做的伎俩。