1

我有一个通过 fluent 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 查询?还是另一种解决方案?

4

1 回答 1

2

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

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

如果Person1并且Person2是实体,那么Person1.Friends.Add(Person2)应该可以解决问题。

于 2014-11-25T14:06:46.887 回答