11

是否可以在一端没有导航属性的情况下映射多对多关系?例如,我有一些小部件和一些可以为特定小部件加注星标的用户。我希望能够看到用户关心哪些小部件加星标,但我并不真正关心看到所有为特定小部件加星标的用户

小部件.cs

public int Id { get; set; }
public string Name { get; set; }

用户.cs

public int Id { get; set; }
public string Username { get; set; }
public ICollection<Widget> StarredWidgets { get; set; }

通过此设置,EF 将生成从小部件到用户的一对多关系。但是,它必须是多对多的。我意识到我可以添加一个public ICollection<User> Usersto Widget.cs,但只是看看是否有另一种解决方法。

4

1 回答 1

39

您可以并且这种情况必须定义与 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");
    });
于 2013-05-23T16:27:49.863 回答