我通过流畅的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查询?还是另一种解决方案?
答案 0 :(得分:2)
您无法直接访问友谊实体,因为它不存在。实体框架处理多对多关系的方式,友谊表是不可见的,从未建模。如果您希望它作为一个实体可用,您必须明确地将该实体添加到模型中,并用两个一对多关系替换您的多对多关系。
如果您要问的是如何在多对多实体框架中创建实体之间的关系,那么它应该像添加对集合的引用一样简单。
如果Person1
和Person2
是实体,那么Person1.Friends.Add(Person2)
应该可以做到。