SQL 类型提供者无法为多对多关系正常工作

SQL type providers not working correctly for many to many relationship

我正在尝试使用 F# 中的 SqlDataConnection 类型提供程序来访问我使用 C# 中定义的 entity framework 代码优先模型创建的数据库。

public class Tag
{
    [Required]
    public int TagId { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual ICollection<Bookmark> TagBMs { get; set; }

    public Tag()
    {
        TagBMs = new HashSet<Bookmark>();
    }
}

public class Bookmark
{
    [Required]
    public int BookmarkId { get; set; }
    [Required]
    public string Url { get; set; }
    [Required]
    public DateTime DateAdded { get; set; }

    public virtual ICollection<Tag> BMTags { get; set; }

    public Bookmark()
    {
        BMTags = new HashSet<Tag>();
    }
}

public class BookmarksContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder builder)
    {
        builder.Entity<Bookmark>().HasMany(b => b.BMTags).WithMany(t => t.TagBMs).Map(cs =>
            {
                cs.MapLeftKey("TagId");
                cs.MapRightKey("BookmarkId");
                cs.ToTable("BookmarkTag");
            });

        base.OnModelCreating(builder);
    }

    public DbSet<Bookmark> Bookmarks { get; set; }
    public DbSet<Tag> Tags { get; set; }
}

在 C# 中访问数据库时,Tag 对象有一个 "TagBMs" 属性,书签有一个 "BMTags" 属性,我可以用它来添加标签到书签和书签到标签。但是,当我尝试从 F# 访问同一个数据库时,这些属性不会出现。相反,Bookmark 对象有一个 "BookmarkTag" 属性,其中 returns 数据来自 link table。我需要更改什么才能在 F# 中获得正确的属性?我将 SqlDataConnection 类型设置如下:

type dbSchema = SqlDataConnection<"""Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DatabaseModelAndMigrations.BookmarksContext;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False""">

不要使用 SQL 类型提供程序,只需使用 F# 代码中的 C# EF DbContext。

会简单很多。