是否可以映射多对多的关系而不在其中一个端点上有导航属性?例如,我有一些小部件和一些可以为特定小部件加注星标的用户。我希望能够看到用户关注哪些小部件明星,但我并不真正关心所有已经为某个特定小部件加星标的用户
Widget.cs
public int Id { get; set; }
public string Name { get; set; }
User.cs
public int Id { get; set; }
public string Username { get; set; }
public ICollection<Widget> StarredWidgets { get; set; }
通过此设置,EF将生成从窗口小部件到用户的一对多关系。但是,它需要是多对多的。我意识到我可以向public ICollection<User> Users
添加Widget.cs
,但只是看看是否还有另外一种方法。
答案 0 :(得分:32)
您可以和本案例必须定义与Fluent API的多对多关系:
modelBuilder.Entity<User>()
.HasMany(u => u.StarredWidgets)
.WithMany() // <- no parameter here because there is no navigation property
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("WidgetId");
m.ToTable("UserWidgets");
});